From: Jouni Ahto Date: Sat, 27 Nov 1999 20:51:17 +0000 (+0000) Subject: Use thread-safe versions of localtime and gmtime X-Git-Tag: PRE_RETURN_REF_PATCH~206 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3e8303abf0dfab5a93d5109ef0abe8e4c1e55f41;p=php Use thread-safe versions of localtime and gmtime --- diff --git a/ext/dbase/dbf_misc.c b/ext/dbase/dbf_misc.c index 84573e47a4..fedb0d0f9c 100644 --- a/ext/dbase/dbf_misc.c +++ b/ext/dbase/dbf_misc.c @@ -151,11 +151,11 @@ int db_date_day(char *cp) char *db_cur_date(char *cp) { - struct tm *ctm; + struct tm *ctm, tmbuf; time_t c_time; c_time = time((time_t *)NULL); - ctm = localtime(&c_time); + ctm = localtime_r(&c_time, &tmbuf); if (cp == NULL) cp = (char *)malloc(9); diff --git a/ext/standard/parsedate.y b/ext/standard/parsedate.y index 513ac73ea6..17b21b3ecd 100644 --- a/ext/standard/parsedate.y +++ b/ext/standard/parsedate.y @@ -533,13 +533,13 @@ int GetTimeInfo(TIMEINFO *Now) { static time_t NextHour; static long LastTzone; - struct tm *tm; + struct tm *tm, tmbuf; int secondsUntilNextHour; #if defined(HAVE_GETTIMEOFDAY) struct timeval tv; #endif /* defined(HAVE_GETTIMEOFDAY) */ #if !defined(HAVE_TM_GMTOFF) - struct tm local; + struct tm local, tmbuf; struct tm gmt; #endif /* !defined(HAVE_TM_GMTOFF) */ @@ -557,13 +557,13 @@ int GetTimeInfo(TIMEINFO *Now) /* Now get the timezone if the last time < HH:00:00 <= now for some HH. */ if (NextHour <= Now->time) { - if ((tm = localtime(&Now->time)) == NULL) + if ((tm = localtime_r(&Now->time, &tmbuf)) == NULL) return -1; secondsUntilNextHour = 60 * (60 - tm->tm_min) - tm->tm_sec; #if !defined(HAVE_TM_GMTOFF) /* To get the timezone, compare localtime with GMT. */ local = *tm; - if ((tm = gmtime(&Now->time)) == NULL) + if ((tm = gmtime_r(&Now->time, &tmbuf)) == NULL) return -1; gmt = *tm; @@ -698,11 +698,11 @@ RelativeMonth(Start, RelMonth) time_t Start; time_t RelMonth; { - struct tm *tm; + struct tm *tm, tmbuf; time_t Month; time_t Year; - tm = localtime(&Start); + tm = localtime_r(&Start, &tmbuf); Month = 12 * tm->tm_year + tm->tm_mon + RelMonth; Year = Month / 12; Year += 1900; @@ -868,7 +868,7 @@ static int date_lex(void) time_t parsedate(char *p, TIMEINFO *now) { extern int date_parse(); - struct tm *tm; + struct tm *tm, tmbuf; TIMEINFO ti; time_t Start; @@ -878,7 +878,7 @@ time_t parsedate(char *p, TIMEINFO *now) (void)GetTimeInfo(&ti); } - tm = localtime(&now->time); + tm = localtime_r(&now->time, &tmbuf); yyYear = tm->tm_year + 1900; yyMonth = tm->tm_mon + 1; yyDay = tm->tm_mday;