[tz] [PROPOSED PATCH] Make the library thread-safe if THREAD_SAFE is defined.

Paul Eggert eggert at cs.ucla.edu
Mon Aug 25 01:56:39 UTC 2014

Attached is another fixup for that patch, to fix a race that could cause 
two threads try to assign to tzname simultaneously.  Only tzset-like 
functions (or functions documented to call tzset) should assign to 
tzname anyway.  The commentary for this fixup can be:

(localsub): Don't set tzname here; that's not thread-safe.  This change 
can lose information on hosts without TM_ZONE, but there is no reliable 
way to fix that in a thread-safe way.
-------------- next part --------------
diff --git a/localtime.c b/localtime.c
index f499583..1df3fba 100644
--- a/localtime.c
+++ b/localtime.c
@@ -1322,7 +1322,6 @@ localsub(const time_t *const timep, const int_fast32_t offset,
 	result = timesub(&t, ttisp->tt_gmtoff, sp, tmp);
 	tmp->tm_isdst = ttisp->tt_isdst;
-	tzname[tmp->tm_isdst] = &sp->chars[ttisp->tt_abbrind];
 #ifdef TM_ZONE
 	tmp->TM_ZONE = &sp->chars[ttisp->tt_abbrind];
 #endif /* defined TM_ZONE */

More information about the tz mailing list