POSIX requires ctime_r return a null pointer on failure, which can occur if the input time_t value is not representable in broken down form. based on patch by Alexander Monakov.
@@ -2,7 +2,6 @@
char *ctime_r(const time_t *t, char *buf)
{
- struct tm tm;
- localtime_r(t, &tm);
- return asctime_r(&tm, buf);
+ struct tm tm, *tm_p = localtime_r(t, &tm);
+ return tm_p ? asctime_r(tm_p, buf) : 0;
}