Browse Source

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>
tags/n1.0
Martin Storsjö 13 years ago
parent
commit
dc53858063
1 changed files with 15 additions and 3 deletions
  1. +15
    -3
      libavformat/wtv.c

+ 15
- 3
libavformat/wtv.c View File

@@ -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)


Loading…
Cancel
Save