diff --git a/libcef/common/time_impl.cc b/libcef/common/time_impl.cc index 1d47c5c33..67f31635c 100644 --- a/libcef/common/time_impl.cc +++ b/libcef/common/time_impl.cc @@ -20,6 +20,16 @@ void cef_time_to_basetime(const cef_time_t& cef_time, base::Time& time) { } void cef_time_from_basetime(const base::Time& time, cef_time_t& cef_time) { +#if defined(OS_WIN) + int64_t t = time.ToDeltaSinceWindowsEpoch().InMicroseconds(); + // From MSDN, FILETIME "Contains a 64-bit value representing the number of + // 100-nanosecond intervals since January 1, 1601 (UTC)." This value must + // be less than 0x8000000000000000. Otherwise, the function + // FileTimeToSystemTime fails. + if (t < 0 || static_cast(t * 10) >= 0x8000000000000000) + return; +#endif + base::Time::Exploded exploded; time.UTCExplode(&exploded); cef_time.year = exploded.year; diff --git a/tests/ceftests/cookie_unittest.cc b/tests/ceftests/cookie_unittest.cc index 890286aa6..e4672a1c7 100644 --- a/tests/ceftests/cookie_unittest.cc +++ b/tests/ceftests/cookie_unittest.cc @@ -569,7 +569,9 @@ class CookieTestJSHandler : public TestHandler { std::string page = "" "" "COOKIE TEST1"; AddResource(kCookieJSUrl1, page, "text/html");