aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/getdate.c9
-rw-r--r--lib/getdate.y11
2 files changed, 17 insertions, 3 deletions
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);