diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | test/ruby/test_time.rb | 7 | ||||
-rw-r--r-- | time.c | 5 |
3 files changed, 17 insertions, 1 deletions
@@ -1,3 +1,9 @@ +Sat Nov 19 19:31:47 2011 Tanaka Akira <akr@fsij.org> + + * time.c (TIME_COPY_GMT): copy vtm.utc_offset and vtm.zone too. + patch by Tomoyuki Chikanaga. + [ruby-dev:44827] [Bug #5586] + Sat Nov 19 16:36:57 2011 Tanaka Akira <akr@fsij.org> * test/net/http/test_http.rb: remove temporally files in ensure clause. diff --git a/test/ruby/test_time.rb b/test/ruby/test_time.rb index 0f54b65cc7..cf7aad38a2 100644 --- a/test/ruby/test_time.rb +++ b/test/ruby/test_time.rb @@ -278,6 +278,13 @@ class TestTime < Test::Unit::TestCase assert_equal(29700, t2.utc_offset, bug) end + def test_marshal_to_s + t1 = Time.new(2011,11,8, 0,42,25, 9*3600) + t2 = Time.at(Marshal.load(Marshal.dump(t1))) + assert_equal("2011-11-08 00:42:25 +0900", t2.to_s, + "[ruby-dev:44827] [Bug #5586]") + end + # Sat Jan 01 00:00:00 UTC 2000 T2000 = Time.at(946684800).gmtime @@ -1820,7 +1820,10 @@ struct time_object { (tobj)->vtm.utc_offset = (off), \ (tobj)->vtm.zone = NULL) -#define TIME_COPY_GMT(tobj1, tobj2) ((tobj1)->gmt = (tobj2)->gmt) +#define TIME_COPY_GMT(tobj1, tobj2) \ + ((tobj1)->gmt = (tobj2)->gmt, \ + (tobj1)->vtm.utc_offset = (tobj2)->vtm.utc_offset, \ + (tobj1)->vtm.zone = (tobj2)->vtm.zone) static VALUE time_get_tm(VALUE, struct time_object *); #define MAKE_TM(time, tobj) \ |