diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-01-06 12:41:20 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-01-06 12:41:20 +0000 |
commit | 9bbe6b9d0ce6f3228b082aba3f70cdefd3415a22 (patch) | |
tree | d07276c95c318147da10836a1eb8062a7c870dcb | |
parent | c0ee6f2af98a8322e842bb2847492bfc56cb21b9 (diff) |
* 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.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49162 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | test/ruby/test_time_tz.rb | 8 | ||||
-rw-r--r-- | time.c | 2 |
3 files changed, 16 insertions, 1 deletions
@@ -1,3 +1,10 @@ +Tue Jan 6 21:41:04 2015 Tanaka Akira <akr@fsij.org> + + * 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@atdot.net> * test/fiddle/test_handle.rb: fix syntax. diff --git a/test/ruby/test_time_tz.rb b/test/ruby/test_time_tz.rb index 5fb00557c8..6f3e05f4cc 100644 --- a/test/ruby/test_time_tz.rb +++ b/test/ruby/test_time_tz.rb @@ -155,6 +155,14 @@ class TestTimeTZ < Test::Unit::TestCase } 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) @@ -1548,7 +1548,7 @@ timelocalw(struct vtm *vtm) 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; |