This is about src/extra/tzone/localtime.c , the internal tzcode.
>From my reading, originally, for 'lcl_is_set',
-1 means set not from 'TZ' environment variable;
1 means set from 'TZ' environment variable.
With r90041, 'lcl_is_set' becomes bool with -1 becomes false.
As a static variable without initializer, 'lcl_is_set' is initialized to 0.
Because of
if (!lcl_is_set) return;
in function 'R_tzsetwall' after change, tzset() with 'TZ' environment variable
not set will return without loading time zone definition if tzset() is never
called with 'TZ' environment variable set.
The change mostly doesn't cause problem, only because tzset() is called first
while TZ=UTC in function 'set_tz' in src/main/datetime.c . However, there is
one place where 'set_tz' is not called for current time zone ('tzone' attribute
is NULL or has empty string as the first element): function 'do_formatPOSIXlt'.
There, time zone information is needed for format "%Z".
> Sys.getenv("TZ", NA)
[1] NA
> x <- .POSIXlt(list(
+ sec=0,min=0L,hour=0L,mday=1L,mon=0L,year=100L,wday=6L,yday=0L,isdst=0L))
> format(x, "%Z")
[1] " "
> sessionInfo()
R Under development (unstable) (2026-05-11 r90046 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 10 x64 (build 18363)
Matrix products: default
LAPACK version 3.12.1
locale:
[1] LC_COLLATE=English_Indonesia.utf8 LC_CTYPE=English_Indonesia.utf8
[3] LC_MONETARY=English_Indonesia.utf8 LC_NUMERIC=C
[5] LC_TIME=English_Indonesia.utf8
time zone: Asia/Jakarta
tzcode source: internal
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_4.7.0
With R 4.6.0 on the same computer:
> Sys.getenv("TZ", NA)
[1] NA
> x <- .POSIXlt(list(
+ sec=0,min=0L,hour=0L,mday=1L,mon=0L,year=100L,wday=6L,yday=0L,isdst=0L))
> format(x, "%Z")
[1] "WIB"
> sessionInfo()
R version 4.6.0 (2026-04-24 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 10 x64 (build 18363)
Matrix products: default
LAPACK version 3.12.1
locale:
[1] LC_COLLATE=English_Indonesia.utf8 LC_CTYPE=English_Indonesia.utf8
[3] LC_MONETARY=English_Indonesia.utf8 LC_NUMERIC=C
[5] LC_TIME=English_Indonesia.utf8
time zone: Asia/Jakarta
tzcode source: internal
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_4.6.0
The change of 'gmt_is_set' to bool is fine, because 'gmt_is_set' is 1 (TRUE) or
0.
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel