diff options
author | Martin Storsjö <martin@martin.st> | 2012-06-23 22:46:26 +0400 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2012-06-25 17:20:08 +0400 |
commit | dc5385806339f90b4eb074d9002205ebb4010cc2 (patch) | |
tree | a087fabe4d184dafe0e6e5da460cbd4b864f431c /libavformat/wtv.c | |
parent | 82992604706144910f4a2f875d48cfc66c1b70d7 (diff) |
wtv: Check the return value from gmtime
On MSVC, gmtime returns NULL for values outside of their supported
range (and these show up in our fate test). This doesn't seem
to affect the actual fate test result.
Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavformat/wtv.c')
-rw-r--r-- | libavformat/wtv.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/libavformat/wtv.c b/libavformat/wtv.c index 07549b2cc5..83f1bc17eb 100644 --- a/libavformat/wtv.c +++ b/libavformat/wtv.c @@ -443,7 +443,11 @@ static int read_probe(AVProbeData *p) static void filetime_to_iso8601(char *buf, int buf_size, int64_t value) { time_t t = (value / 10000000LL) - 11644473600LL; - strftime(buf, buf_size, "%Y-%m-%d %H:%M:%S", gmtime(&t)); + struct tm *tm = gmtime(&t); + if (tm) + strftime(buf, buf_size, "%Y-%m-%d %H:%M:%S", gmtime(&t)); + else + buf[0] = '\0'; } /** @@ -452,7 +456,11 @@ static void filetime_to_iso8601(char *buf, int buf_size, int64_t value) static void crazytime_to_iso8601(char *buf, int buf_size, int64_t value) { time_t t = (value / 10000000LL) - 719162LL*86400LL; - strftime(buf, buf_size, "%Y-%m-%d %H:%M:%S", gmtime(&t)); + struct tm *tm = gmtime(&t); + if (tm) + strftime(buf, buf_size, "%Y-%m-%d %H:%M:%S", gmtime(&t)); + else + buf[0] = '\0'; } /** @@ -461,7 +469,11 @@ static void crazytime_to_iso8601(char *buf, int buf_size, int64_t value) static void oledate_to_iso8601(char *buf, int buf_size, int64_t value) { time_t t = 631112400LL + 86400*av_int2double(value); - strftime(buf, buf_size, "%Y-%m-%d %H:%M:%S", gmtime(&t)); + struct tm *tm = gmtime(&t); + if (tm) + strftime(buf, buf_size, "%Y-%m-%d %H:%M:%S", gmtime(&t)); + else + buf[0] = '\0'; } static void get_attachment(AVFormatContext *s, AVIOContext *pb, int length) |