summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-09-18 03:17:06 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-09-18 03:17:06 +0000
commit773fe1d6e97cc3bd80d08d57bf0260a6c1b673e5 (patch)
treefb2448194681b81c820575782a080025dfda8132
parent5af078e09dc24095c289455e9e2ecdec1353c0f8 (diff)
downloadruby-773fe1d6e97cc3bd80d08d57bf0260a6c1b673e5.tar.gz
ruby-773fe1d6e97cc3bd80d08d57bf0260a6c1b673e5.tar.xz
ruby-773fe1d6e97cc3bd80d08d57bf0260a6c1b673e5.zip
* numeric.c (fix_mul): get rid of shift overflow.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@10959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--numeric.c2
2 files changed, 5 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index f874fc561..2335ae6bf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Mon Sep 18 12:16:48 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (fix_mul): get rid of shift overflow.
+
Mon Sep 18 10:47:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* dir.c (dir_s_glob): remove unused variable.
diff --git a/numeric.c b/numeric.c
index d6faa16fe..1a7c098e7 100644
--- a/numeric.c
+++ b/numeric.c
@@ -1989,7 +1989,7 @@ fix_mul(VALUE x, VALUE y)
if (FIXABLE(d)) return LONG2FIX(d);
return rb_ll2inum(d);
#else
-# define SQRT_LONG_MAX (1<<((SIZEOF_VALUE*CHAR_BIT-1)/2))
+# define SQRT_LONG_MAX ((SIZEOF_VALUE)1<<((SIZEOF_VALUE*CHAR_BIT-1)/2))
/*tests if N*N would overflow*/
# define FIT_SQRT_LONG(n) (((n)<SQRT_LONG_MAX)&&((n)>=-SQRT_LONG_MAX))
if (FIT_SQRT_LONG(a) && FIT_SQRT_LONG(b))