Skip to content
  • U.Nakamura's avatar
    b4446de7
    merge revision(s)... · b4446de7
    U.Nakamura authored
    merge revision(s) d6a2bce6,c687be4b: [Backport #16159]
    
    	time.c (find_time_t): fix round-to-zero bug
    
    	`find_time_t` did not work correctly for year older than the Epoch
    	because it used C's integer division (which rounds negative to zero).
    
    	For example, `TIme.new(1933)` returned a wrong time whose year is 1922
    	in Asia/Kuala_Lumpur because there is no 00:00:00 1st Jan. 1933 in the
    	time zone.
    
    	```
    	$ TZ=Asia/Kuala_Lumpur ruby -e 'p Time.new(1933)'
    	1932-12-31 00:00:00 +0700
    	```
    
    	This change fixes the issue by using `DIV` macro instead of `/`.
    	Now `Time.new(1933)` returns a time in 1933.
    
    	```
    	$ TZ=Asia/Kuala_Lumpur ruby -e 'p Time.new(1933)'
    	1933-01-01 00:20:00 +0720
    	```
    
    	[Bug #16159]
    
    	Added a test for [Bug #16159]
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_5@67864 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    b4446de7
    merge revision(s)...
    U.Nakamura authored
    merge revision(s) d6a2bce6,c687be4b: [Backport #16159]
    
    	time.c (find_time_t): fix round-to-zero bug
    
    	`find_time_t` did not work correctly for year older than the Epoch
    	because it used C's integer division (which rounds negative to zero).
    
    	For example, `TIme.new(1933)` returned a wrong time whose year is 1922
    	in Asia/Kuala_Lumpur because there is no 00:00:00 1st Jan. 1933 in the
    	time zone.
    
    	```
    	$ TZ=Asia/Kuala_Lumpur ruby -e 'p Time.new(1933)'
    	1932-12-31 00:00:00 +0700
    	```
    
    	This change fixes the issue by using `DIV` macro instead of `/`.
    	Now `Time.new(1933)` returns a time in 1933.
    
    	```
    	$ TZ=Asia/Kuala_Lumpur ruby -e 'p Time.new(1933)'
    	1933-01-01 00:20:00 +0720
    	```
    
    	[Bug #16159]
    
    	Added a test for [Bug #16159]
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_5@67864 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Loading