summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-04-27 08:05:21 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-04-27 08:05:21 +0000
commit18c20cccee7d912bfe963a901a6cdb41f3db07e1 (patch)
tree5bf06be14447d65bfef7f68b019268ba8a4d683c
parent8bc02b5ded0ce35097ae13d30c014b99ac861ef0 (diff)
downloadruby-18c20cccee7d912bfe963a901a6cdb41f3db07e1.tar.gz
ruby-18c20cccee7d912bfe963a901a6cdb41f3db07e1.tar.xz
ruby-18c20cccee7d912bfe963a901a6cdb41f3db07e1.zip
* numeric.c (int_pow): bugfix of overflow detection.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@12228 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--numeric.c2
2 files changed, 4 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index a8f2f536d..4251d8959 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,6 @@
-Fri Apr 27 12:54:35 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Apr 27 17:05:41 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (int_pow): bugfix of overflow detection.
* numeric.c (int_pow): rb_big_pow() may return other than Bignum.
diff --git a/numeric.c b/numeric.c
index 1425348a9..db847567d 100644
--- a/numeric.c
+++ b/numeric.c
@@ -2283,7 +2283,7 @@ int_pow(long x, unsigned long y)
}
{
long xz = x * z;
- if (xz < z || xz < x || !POSFIXABLE(xz)) {
+ if (!POSFIXABLE(xz) || xz / x != z) {
goto bignum;
}
z = xz;