Project

General

Profile

Actions

Bug #6794

closed

x64 mingw: test_at(TestTime) failure

Added by h.shirosaki (Hiroshi Shirosaki) over 11 years ago. Updated over 11 years ago.

Status:
Closed
Target version:
ruby -v:
ruby 2.0.0dev (2012-07-25 trunk 36538) [x64-mingw32]
Backport:
[ruby-core:46776]

Description

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.


Files

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0