ruby-changes:37081
From: akr <ko1@a...>
Date: Tue, 6 Jan 2015 21:41:34 +0900 (JST)
Subject: [ruby-changes:37081] akr:r49162 (trunk): * time.c (timelocalw): Set tm_isdst field -1 if vtm->isdst is
akr 2015-01-06 21:41:20 +0900 (Tue, 06 Jan 2015) New Revision: 49162 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=49162 Log: * time.c (timelocalw): Set tm_isdst field -1 if vtm->isdst is VTM_ISDST_INITVAL. This bug is introduced at packing struct vtm (r45155). [ruby-core:67345] [Bug #10698] Reported by Boris Ruf. Modified files: trunk/ChangeLog trunk/test/ruby/test_time_tz.rb trunk/time.c Index: time.c =================================================================== --- time.c (revision 49161) +++ time.c (revision 49162) @@ -1548,7 +1548,7 @@ timelocalw(struct vtm *vtm) https://github.com/ruby/ruby/blob/trunk/time.c#L1548 tm.tm_hour = vtm->hour; tm.tm_min = vtm->min; tm.tm_sec = vtm->sec; - tm.tm_isdst = vtm->isdst; + tm.tm_isdst = vtm->isdst == VTM_ISDST_INITVAL ? -1 : vtm->isdst; if (find_time_t(&tm, 0, &t)) goto no_localtime; Index: ChangeLog =================================================================== --- ChangeLog (revision 49161) +++ ChangeLog (revision 49162) @@ -1,3 +1,10 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Tue Jan 6 21:41:04 2015 Tanaka Akira <akr@f...> + + * time.c (timelocalw): Set tm_isdst field -1 if vtm->isdst is + VTM_ISDST_INITVAL. This bug is introduced at packing struct + vtm (r45155). + [ruby-core:67345] [Bug #10698] Reported by Boris Ruf. + Tue Jan 6 03:10:54 2015 Koichi Sasada <ko1@a...> * test/fiddle/test_handle.rb: fix syntax. Index: test/ruby/test_time_tz.rb =================================================================== --- test/ruby/test_time_tz.rb (revision 49161) +++ test/ruby/test_time_tz.rb (revision 49162) @@ -155,6 +155,14 @@ class TestTimeTZ < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ruby/test_time_tz.rb#L155 } end + def test_europe_berlin + with_tz(tz="Europe/Berlin") { + assert_time_constructor(tz, "2011-10-30 02:00:00 +0100", :local, [2011,10,30,2,0,0], "[ruby-core:67345] [Bug #10698]") + assert_time_constructor(tz, "2011-10-30 02:00:00 +0100", :local, [0,0,2,30,10,2011,nil,nil,false,nil]) + assert_time_constructor(tz, "2011-10-30 02:00:00 +0200", :local, [0,0,2,30,10,2011,nil,nil,true,nil]) + } + end + def test_europe_lisbon with_tz("Europe/Lisbon") { assert_equal("LMT", Time.new(-0x1_0000_0000_0000_0000).zone) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/