Just copy tzmode

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65024 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2018-10-12 02:25:37 +00:00
parent d8104d73d1
commit 093398f979

20
time.c
View File

@ -3882,28 +3882,18 @@ time_to_s(VALUE time)
} }
static VALUE 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; VALUE result;
struct time_object *result_tobj;
offset = num_exact(offset); offset = num_exact(offset);
if (sign < 0) if (sign < 0)
result = time_new_timew(rb_cTime, wsub(tobj->timew, rb_time_magnify(v2w(offset)))); result = time_new_timew(rb_cTime, wsub(tobj->timew, rb_time_magnify(v2w(offset))));
else else
result = time_new_timew(rb_cTime, wadd(tobj->timew, rb_time_magnify(v2w(offset)))); result = time_new_timew(rb_cTime, wadd(tobj->timew, rb_time_magnify(v2w(offset))));
if (TZMODE_UTC_P(tobj)) { GetTimeval(result, result_tobj);
GetTimeval(result, tobj); TZMODE_COPY(result_tobj, 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;
}
return result; return result;
} }