[ruby-cvs:78718] d6a2bce64a (master): time.c (find_time_t): fix round-to-zero bug

"Yusuke Endoh" <[email protected]>
Newsgroups gmane.comp.lang.ruby.cvs
Message-ID <[email protected]>
Yusuke Endoh	2019-12-17 10:31:20 +0900 (Tue, 17 Dec 2019)

  New Revision: d6a2bce64a

  https://github.com/ruby/ruby/commit/d6a2bce64a

  Log:
    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]

  Modified files:
    time.c
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.