From 82ee7d0dda0fec8cdb670f4e844bf5c2927ad9de Mon Sep 17 00:00:00 2001 From: Martin Storsjö Date: Fri, 24 Oct 2014 10:46:36 +0300 Subject: Use gmtime_r instead of gmtime and localtime_r instead of localtime MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit gmtime isn't thread safe in general. In msvcrt (which lacks gmtime_r), the buffer used by gmtime is thread specific though. One call to localtime is left in avconv_opt.c, where thread safety shouldn't matter (instead of making avconv depend on the libavutil internal header). Signed-off-by: Martin Storsjö --- libavutil/parseutils.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'libavutil/parseutils.c') diff --git a/libavutil/parseutils.c b/libavutil/parseutils.c index 414cd47e66..1ca0086adf 100644 --- a/libavutil/parseutils.c +++ b/libavutil/parseutils.c @@ -29,6 +29,7 @@ #include "eval.h" #include "log.h" #include "random_seed.h" +#include "time_internal.h" #include "parseutils.h" typedef struct { @@ -483,7 +484,7 @@ int av_parse_time(int64_t *timeval, const char *timestr, int duration) { const char *p; int64_t t; - struct tm dt = { 0 }; + struct tm dt = { 0 }, tmbuf; int i; static const char * const date_fmt[] = { "%Y-%m-%d", @@ -527,9 +528,9 @@ int av_parse_time(int64_t *timeval, const char *timestr, int duration) * current year-month-day time */ if (!q) { if (is_utc) { - dt = *gmtime(&now); + dt = *gmtime_r(&now, &tmbuf); } else { - dt = *localtime(&now); + dt = *localtime_r(&now, &tmbuf); } dt.tm_hour = dt.tm_min = dt.tm_sec = 0; } else { -- cgit v1.2.3