Re: gmtime_r bug in High Sierra?
Re: gmtime_r bug in High Sierra?
- Subject: Re: gmtime_r bug in High Sierra?
- From: "Stephen J. Butler" <email@hidden>
- Date: Sat, 9 Sep 2017 20:23:20 -0500
It's not a bug IMHO. The problem is that you don't check the return value
of gmtime_r(). If you did, you'd see that the result is NULL (which means
the function failed) and so you shouldn't use any of the results (they're
undefined).
#include <unistd.h>
#include <time.h>
#include <string.h>
#include <stdio.h>
int main(int argc, const char * argv[]) {
char tmpc[128];
struct tm tm;
memset(tmpc, 0, sizeof(tmpc));
__darwin_time_t tValue=2914986787602432000;
if (gmtime_r(&tValue, &tm)) {
strftime(tmpc, sizeof(tmpc), "%FT%T", &tm);
printf("time: %s\n",tmpc);
printf("-----------------\n");
}
struct tm tm2;
tm2.tm_mon=10240;
memset(tmpc, 0, sizeof(tmpc));
tValue=2914986787602432000;
if (gmtime_r(&tValue, &tm2)) {
strftime(tmpc, sizeof(tmpc), "%FT%T", &tm2);
printf("time: %s\n",tmpc);
}
return 0;
}
But also here, the number you're providing to tValue looks a lot like
nanosecond time stamp, and gmtime_r() expects seconds. If you correct that,
then you get:
time: 2062-05-16T06:33:07
-----------------
time: 2062-05-16T06:33:07
On Sat, Sep 9, 2017 at 5:51 PM, Stephane Sudre <email@hidden>
wrote:
> Maybe I'm missing something (regarding the tm var) but shouldn't all
> the struct tm fields be correctly set by gmtime_r?
>
> #include <unistd.h>
> #include <time.h>
> #include <string.h>
> #include <stdio.h>
>
> int main(int argc, const char * argv[]) {
>
> char tmpc[128];
> struct tm tm;
>
> memset(tmpc, 0, sizeof(tmpc));
>
> __darwin_time_t tValue=2914986787602432000;
>
> gmtime_r(&tValue, &tm);
> strftime(tmpc, sizeof(tmpc), "%FT%T", &tm);
>
> printf("time: %s\n",tmpc);
>
> printf("-----------------\n");
>
> struct tm tm2;
> tm2.tm_mon=10240;
>
> memset(tmpc, 0, sizeof(tmpc));
>
> tValue=2914986787602432000;
>
> gmtime_r(&tValue, &tm2);
> strftime(tmpc, sizeof(tmpc), "%FT%T", &tm2);
>
> printf("time: %s\n",tmpc);
>
> return 0;
> }
>
> =>
>
> time: 1900-01-00T18:40:00
> -----------------
> time: 1900-10241-00T18:40:00
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Darwin-dev mailing list (email@hidden)
> Help/Unsubscribe/Update your Subscription:
> email@hidden
>
> This email sent to email@hidden
>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden