From: "nobu (Nobuyoshi Nakada)" Date: 2012-07-28T11:05:18+09:00 Subject: [ruby-core:46822] [ruby-trunk - Bug #6794] x64 mingw: test_at(TestTime) failure Issue #6794 has been updated by nobu (Nobuyoshi Nakada). Seems working fine. Please check in. BTW, 32bit mingw doesn't have 64s() family? ---------------------------------------- Bug #6794: x64 mingw: test_at(TestTime) failure https://bugs.ruby-lang.org/issues/6794#change-28500 Author: h.shirosaki (Hiroshi Shirosaki) Status: Assigned Priority: Normal Assignee: nobu (Nobuyoshi Nakada) Category: core Target version: 2.0.0 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/