From 87877eb04f5376b651e501cd7aa451c870df7411 Mon Sep 17 00:00:00 2001 From: akr Date: Mon, 1 Apr 2013 13:34:52 +0000 Subject: * 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 --- ext/zlib/zlib.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'ext/zlib/zlib.c') 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; } -- cgit v1.2.3