[Lazarus] Weird object variables access - fpc issue?

Mattias Gaertner nc-gaertnma at netcologne.de
Tue Oct 24 13:59:17 CEST 2017


On Tue, 24 Oct 2017 12:41:11 +0100
el es via Lazarus <lazarus at lists.lazarus-ide.org> wrote:

>[...]
> Now() is literally 
> 
> function Now : TDateTime;
> var ASystemTime : TSYSTEMTIME;
> begin
>    GetSystemTime(ASystemTime);
>    Result := SystemTimeToDateTime(ASystemTime);
> end;
> 
> on my installation (lazarus 1.6.4 #54278, FPC 3.0.2)
> 
> I'd say it's questionable to say it's thread-safe that way; It may be safe to use in
> main thread (where no 2 different contexts can mangle each others ASystemTime);

ASystemTime is a stack variable. That's thread-safe.

In fpc trunk it calls GetLocalTime on Unix, which fetches timezone
every time. No global var. So it should be thread safe.

> because each thread instance would have its own local variables, right?
> so no thread would step on each others' toes;

You have to check called code too.

Mattias


More information about the Lazarus mailing list