diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-04-01 13:34:52 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-04-01 13:34:52 +0000 |
commit | 87877eb04f5376b651e501cd7aa451c870df7411 (patch) | |
tree | 75e2d535e44e0553d91ea9a8ea00d93aed3edd82 | |
parent | f4eeca1d161d398971ef7da1c3765f206b35f477 (diff) | |
download | ruby-87877eb04f5376b651e501cd7aa451c870df7411.tar.gz |
* ext/zlib/zlib.c (rb_gzfile_set_mtime): Use NUM2UINT.
The old logic doesn't work well on LP64 platforms as:
.. -2**63-1 => error,
-2**63 .. -2**62-1 => success,
-2**62 .. -2**31-1 => error,
-2**31 .. 2**31-1 => success,
2**31 .. 2**62-1 => error,
2**62 .. 2**64-1 => success,
2**64 .. => error.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40040 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | ext/zlib/zlib.c | 10 |
2 files changed, 15 insertions, 7 deletions
@@ -1,3 +1,15 @@ +Mon Apr 1 22:26:17 2013 Tanaka Akira <akr@fsij.org> + + * ext/zlib/zlib.c (rb_gzfile_set_mtime): Use NUM2UINT. + The old logic doesn't work well on LP64 platforms as: + .. -2**63-1 => error, + -2**63 .. -2**62-1 => success, + -2**62 .. -2**31-1 => error, + -2**31 .. 2**31-1 => success, + 2**31 .. 2**62-1 => error, + 2**62 .. 2**64-1 => success, + 2**64 .. => error. + Mon Apr 1 22:08:02 2013 Benoit Daloze <eregontp@gmail.com> * ext/zlib/zlib.c (Zlib::Inflate.new): diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c index c550f46604..e5a1e670f7 100644 --- a/ext/zlib/zlib.c +++ b/ext/zlib/zlib.c @@ -3188,13 +3188,9 @@ rb_gzfile_set_mtime(VALUE obj, VALUE mtime) rb_raise(cGzError, "header is already written"); } - if (FIXNUM_P(mtime)) { - gz->mtime = FIX2INT(mtime); - } - else { - val = rb_Integer(mtime); - gz->mtime = FIXNUM_P(val) ? FIX2UINT(val) : rb_big2ulong(val); - } + val = rb_Integer(mtime); + gz->mtime = NUM2UINT(val); + return mtime; } |