Dmitry Timoshkov escreveu:
> Hello,
>
Hello,
> --- cvs/hq/wine/dlls/msvcrt/time.c 2006-01-23 20:50:58.000000000 -0600
> +++ wine/dlls/msvcrt/time.c 2006-02-10 12:51:30.000000000 -0600
> @@ -152,8 +152,12 @@ struct MSVCRT_tm* MSVCRT_localtime(const
> SYSTEMTIME st;
> DWORD tzid;
> TIME_ZONE_INFORMATION tzinfo;
> + ULONGLONG time;
>
> - ULONGLONG time = *secs * (ULONGLONG)TICKSPERSEC + TICKS_1601_TO_1970;
> + /* time < 0 means a date before midnight of January 1, 1970 */
> + if (time < 0) return NULL;
> +
> + time = *secs * (ULONGLONG)TICKSPERSEC + TICKS_1601_TO_1970;
>
You compared the "time" before it has a assigned value...
>
> ft.dwHighDateTime = (UINT)(time >> 32);
> ft.dwLowDateTime = (UINT)time;
> @@ -161,7 +165,12 @@ struct MSVCRT_tm* MSVCRT_localtime(const
> FileTimeToLocalFileTime(&ft, &lft);
> FileTimeToSystemTime(&lft, &st);
>
> - if (st.wYear < 1970) return NULL;
> + if (st.wYear < 1970)
> + {
> + /* if this happens it means that the sequence above does something wrong */
> + FIXME("seconds since 1970 %ld => %d/%d/%d %02d:%02d:%02d\n", *secs,
> + st.wDay, st.wMonth, st.wYear, st.wHour, st.wMinute, st.wSecond);
> + }
>
> data->time_buffer.tm_sec = st.wSecond;
> data->time_buffer.tm_min = st.wMinute;
>
> ------------------------------------------------------------------------
>
>
>