Menu

#580 time_t type-cast problem with VS2005

closed-fixed
5
2013-06-21
2006-04-11
Anonymous
No

main.c #line 2987

tv = curlx_tvnow();
now = localtime((time_t *)&tv.tv_sec);

Crash in localtime() (Debug-Version), because the
type-cast to time_t-pointer above!

Type of tv.tv_sec : unsigned integer (32-BIT).
Type of time_t is (now) the same as __time64_t !

Maybe compile-time definitione "_USE_32BIT_TIME_T"
should be used ...

Discussion

  • Daniel Stenberg

    Daniel Stenberg - 2006-04-11
    • status: open --> open-fixed
     
  • Daniel Stenberg

    Daniel Stenberg - 2006-04-11

    Logged In: YES
    user_id=1110

    Thanks!

    I suggest and will apply the fix below:

    diff -u -r1.356 main.c
    --- main.c 9 Apr 2006 22:41:23 -0000 1.356
    +++ main.c 11 Apr 2006 10:45:43 -0000
    @@ -3078,11 +3078,13 @@
    struct timeval tv;
    struct tm *now;
    char timebuf[20];
    + time_t secs;

    (void)handle; /* prevent compiler warning */

    tv = curlx_tvnow();
    - now = localtime((time_t *)&tv.tv_sec); /* not
    multithread safe but we don't care */
    + secs = tv.tv_sec;
    + now = localtime(&secs); /* not multithread safe but we
    don't care */
    if(config->tracetime)
    snprintf(timebuf, sizeof(timebuf), "%02d:%02d:%02d.%06d ",
    now->tm_hour, now->tm_min, now->tm_sec,
    tv.tv_usec);

     
  • Daniel Stenberg

    Daniel Stenberg - 2006-04-13
    • status: open-fixed --> closed-fixed