[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]