mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
based on microsoft's description,the direct convert from FILETIME struct to __int64 is unsafe.
via http://technet.microsoft.com/en-us/library/ms724284(v=vs.85).aspx "Do not cast a pointer to a FILETIME structure to either a ULARGE_INTEGER* or __int64* value because it can cause alignment faults on 64-bit Windows."
This commit is contained in:
parent
c1ac325228
commit
d9810af45a
1 changed files with 12 additions and 2 deletions
14
win32/time.c
14
win32/time.c
|
@ -1,4 +1,3 @@
|
|||
|
||||
/*****************************************************************************
|
||||
* *
|
||||
* DH_TIME.C *
|
||||
|
@ -37,10 +36,21 @@ int getfilesystemtime(struct timeval *time_Info)
|
|||
{
|
||||
FILETIME ft;
|
||||
__int64 ff;
|
||||
ULARGE_INTEGER convFromft;
|
||||
|
||||
GetSystemTimeAsFileTime(&ft); /* 100 ns blocks since 01-Jan-1641 */
|
||||
/* resolution seems to be 0.01 sec */
|
||||
ff = *(__int64*)(&ft);
|
||||
/* ff = *(__int64*)(&ft); */
|
||||
/*
|
||||
Do not cast a pointer to a FILETIME structure to either a
|
||||
ULARGE_INTEGER* or __int64* value because it can cause alignment faults on 64-bit Windows.
|
||||
|
||||
via http://technet.microsoft.com/en-us/library/ms724284(v=vs.85).aspx
|
||||
*/
|
||||
convFromft.HighPart = ft.dwHighDateTime;
|
||||
convFromft.LowPart = ft.dwLowDateTime;
|
||||
ff = convFromft.QuadPart;
|
||||
|
||||
time_Info->tv_sec = (int)(ff/(__int64)10000000-(__int64)11644473600);
|
||||
time_Info->tv_usec = (int)(ff % 10000000)/10;
|
||||
return 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue