diff options
author | 2016-06-25 09:30:03 -0400 | |
---|---|---|
committer | 2016-06-25 16:08:26 -0400 | |
commit | 3232bfad8909240fe18a63fe1c5090efe09bf626 (patch) | |
tree | d1d90e37db3801b6d4dafd9422965f344975faf2 | |
parent | f75a33f7d1ff7fa0baa893a3a374df2de23b050b (diff) |
Fixed incorrect implementation of win_time_point_from_filetime()
-rw-r--r-- | src/osd/windows/winutil.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/osd/windows/winutil.cpp b/src/osd/windows/winutil.cpp index 3ec2314068e..5be325e0fa6 100644 --- a/src/osd/windows/winutil.cpp +++ b/src/osd/windows/winutil.cpp @@ -41,8 +41,12 @@ osd::directory::entry::entry_type win_attributes_to_entry_type(DWORD attributes) std::chrono::system_clock::time_point win_time_point_from_filetime(LPFILETIME file_time) { - return std::chrono::system_clock::time_point(std::chrono::system_clock::duration( - (static_cast<__int64>(file_time->dwHighDateTime) << 32) | file_time->dwLowDateTime)); + ULARGE_INTEGER ull; + ull.LowPart = file_time->dwLowDateTime; + ull.HighPart = file_time->dwHighDateTime; + + time_t t = ull.QuadPart / 10000000ULL - 11644473600ULL; + return std::chrono::system_clock::from_time_t(t); } |