From 112acd7d42e4f290f0c0fd526f1d3a625dae60b2 Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 12 Oct 2018 02:25:37 +0000 Subject: Just copy tzmode git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65024 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- time.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/time.c b/time.c index 5ba13efb9e..dab78ed132 100644 --- a/time.c +++ b/time.c @@ -3882,28 +3882,18 @@ time_to_s(VALUE time) } static VALUE -time_add(struct time_object *tobj, VALUE torig, VALUE offset, int sign) +time_add(const struct time_object *tobj, VALUE torig, VALUE offset, int sign) { VALUE result; + struct time_object *result_tobj; + offset = num_exact(offset); if (sign < 0) result = time_new_timew(rb_cTime, wsub(tobj->timew, rb_time_magnify(v2w(offset)))); else result = time_new_timew(rb_cTime, wadd(tobj->timew, rb_time_magnify(v2w(offset)))); - if (TZMODE_UTC_P(tobj)) { - GetTimeval(result, tobj); - TZMODE_SET_UTC(tobj); - } - else if (TZMODE_FIXOFF_P(tobj)) { - VALUE off = tobj->vtm.utc_offset; - GetTimeval(result, tobj); - TZMODE_SET_FIXOFF(tobj, off); - } - else if (TZMODE_LOCALTIME_P(tobj)) { - VALUE zone = tobj->vtm.zone; - GetTimeval(result, tobj); - tobj->vtm.zone = zone; - } + GetTimeval(result, result_tobj); + TZMODE_COPY(result_tobj, tobj); return result; } -- cgit v1.2.3