From 082b0acffb9eb93c350b5b04fc59509fa9329786 Mon Sep 17 00:00:00 2001 From: usa Date: Mon, 5 Apr 2021 00:17:28 +0000 Subject: merge revision(s) 276f6a225d18561cbe5282b798cb4e416c66079f,95bef7b69a6fb42687a6200b338060be307259f5: [Backport #17352] Don't double fractional seconds when passing timezone object to Time.new I found that fractional seconds were doubled when using the timezone feature of Time in Sequel's named_timezones extension (which uses TZInfo for the timezone object), and traced the problem to this code. There is no subsecx being modified in the utc_to_local call below this, and I'm not sure why you would want to add in the fractional seconds unless you assumed the timezone conversion would drop the existing fractional seconds (TZInfo doesn't drop fractional seconds). Subsecond of Time::tm should be 0 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_6@67934 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- time.c | 1 + 1 file changed, 1 insertion(+) (limited to 'time.c') diff --git a/time.c b/time.c index 2ce9522081..228100a9d1 100644 --- a/time.c +++ b/time.c @@ -5152,6 +5152,7 @@ tm_from_time(VALUE klass, VALUE time) ttm = DATA_PTR(tm); v = &vtm; GMTIMEW(ttm->timew = tobj->timew, v); + ttm->timew = wsub(ttm->timew, v->subsecx); v->subsecx = INT2FIX(0); v->zone = Qnil; ttm->vtm = *v; -- cgit v1.2.3