diff --git a/lib/getdate.c b/lib/getdate.c index 68653d3fb..f6941e708 100644 --- a/lib/getdate.c +++ b/lib/getdate.c @@ -2102,7 +2102,14 @@ curl_getdate (const char *p, const time_t *now) if (cookie.yyHaveZone) { long delta; - struct tm *gmt = gmtime (&Start); + struct tm *gmt; +#ifdef HAVE_GMTIME_R + /* thread-safe version */ + struct tm keeptime; + gmt = (struct tm *)gmtime_r(&Start, &keeptime); +#else + gmt = gmtime(&Start); +#endif if (!gmt) return -1; delta = cookie.yyTimezone * 60L + difftm (&tm, gmt); diff --git a/lib/getdate.y b/lib/getdate.y index cf5f920db..e63eb6e0b 100644 --- a/lib/getdate.y +++ b/lib/getdate.y @@ -211,7 +211,7 @@ typedef struct _CONTEXT { %expect 13 /* turn global variables into locals, additionally enable extra arguments -** for yylex (pointer to yylval and use defined value) +** for yylex (pointer to yylval and user defined value) */ %pure_parser @@ -1058,7 +1058,14 @@ curl_getdate (const char *p, const time_t *now) if (cookie.yyHaveZone) { long delta; - struct tm *gmt = gmtime (&Start); + struct tm *gmt; +#ifdef HAVE_GMTIME_R + /* thread-safe version */ + struct tm keeptime; + gmt = (struct tm *)gmtime_r(&Start, &keeptime); +#else + gmt = gmtime(&Start); +#endif if (!gmt) return -1; delta = cookie.yyTimezone * 60L + difftm (&tm, gmt);