From 285260fce84c945acb588a7c70d3df5d8271f586 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 4 Jun 2015 18:28:29 +0300 Subject: [PATCH] Fix timezone-related functions on MS-Windows * src/editfns.c (set_time_zone_rule) [WINDOWSNT]: Always call 'xputenv', even if no reallocation of tzvalbuf was necessary. This fixes a bug in timezone-related functions on MS-Windows. Reported by Fabrice Popineau . --- src/editfns.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/editfns.c b/src/editfns.c index c387dc78c7d..bfa67e20e3e 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -2318,7 +2318,18 @@ set_time_zone_rule (const char *tzstring) tzval[tzeqlen] = 0; } - if (new_tzvalbuf) + if (new_tzvalbuf +#ifdef WINDOWSNT + /* MS-Windows implementation of 'putenv' copies the argument + string into a block it allocates, so modifying tzval string + does not change the environment. OTOH, the other threads run + by Emacs on MS-Windows never call 'xputenv' or 'putenv' or + 'unsetenv', so the original cause for the dicey in-place + modification technique doesn't exist there in the first + place. */ + || 1 +#endif + ) { /* Although this is not thread-safe, in practice this runs only on startup when there is only one thread. */ -- 2.39.5