From: "h.shirosaki (Hiroshi Shirosaki)" Date: 2012-07-26T09:02:24+09:00 Subject: [ruby-core:46780] [ruby-trunk - Bug #6794] x64 mingw: test_at(TestTime) failure Issue #6794 has been updated by h.shirosaki (Hiroshi Shirosaki). Subject changed from x86 mingw: test_at(TestTime) failure to x64 mingw: test_at(TestTime) failure ---------------------------------------- Bug #6794: x64 mingw: test_at(TestTime) failure https://bugs.ruby-lang.org/issues/6794#change-28450 Author: h.shirosaki (Hiroshi Shirosaki) Status: Open Priority: Normal Assignee: luislavena (Luis Lavena) Category: Target version: ruby -v: ruby 2.0.0dev (2012-07-25 trunk 36538) [x64-mingw32] x64 mingw has the following failure. [ 5/65] TestTime#test_at = 0.00 s 1) Failure: test_at(TestTime) [c:/Users/hiroshi/work/ruby/test/ruby/test_time.rb:194]: <-146138510344> expected but was <1970>. I guess Time.at(large value) fails for the following reason. Time.at calls FileTimeToSystemTime() in localtime_r(). https://github.com/ruby/ruby/blob/trunk/win32/win32.c#L6565 Time limit is 0x8000000000000000 which is a little smaller than 8bytes(= time_t)(= long long). http://msdn.microsoft.com/en-us/library/windows/desktop/ms724280(v=vs.85).aspx Instead, using _localtime_64s() seems to work fine. I changed to use _gmtime_64s() for consistency. I added declarations since mingw-w64 doesn't have these declaration. I attached a patch. -- http://bugs.ruby-lang.org/