Patrick Steinhardt <ps@xxxxxx> writes: > As I was debugging other Windows-specific issues in a VM already, Chris > asked me to also have a look at this issue. And indeed, most of the > tests fail deterministically. I also found a fix: > ... > - setenv("TZ", zone, 1); > + _putenv_s("TZ", zone); > tzset(); > } > > I have no idea why that works though, and the fix is of course not > portable. But with this change, the timezones do get picked up by > `tzset()` and related date functions as expected. The header compat/mingw.h already talks about implementing its own replacement by making gitsetenv() call mingw_putenv(). gitsetenv() emulates setenv() in terms of putenv(), and on Windows mingw_putenv() is what implements putenv(), so the difference you are observing is coming from the difference between mingw_putenv() and _putenv_s(), I would guess. As the former is isolated within compat/mingw.c, it would not involve any additional portability issues to redo the former in terms of the latter, I would imagine. > I'm quite dumb when it comes to the Windows API, so I don't have much of > a clue why this works. The documentation also didn't point out anything > obvious. Dscho, do you happen to have an explanation for this? Thanks.