summaryrefslogtreecommitdiff
path: root/numeric.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-08-19 05:56:09 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-08-19 05:56:09 +0000
commitae23000c0e0e4f4af1b4462147d950549b3abdbe (patch)
tree15aff53955adad0d278851c21030857a07bd2f5f /numeric.c
parent71a202fc01c3284608f486dd8ebb95bc57203221 (diff)
* array.c (sort_2): *a - *b may overflow.
* array.c (ary_new): len*sizeof(VALUE) may be a positive value. * array.c (rb_ary_initialize): ditto. * object.c (rb_class_allocate_instance): move singleton class check from rb_obj_alloc(). * re.c (rb_reg_initialize): should not modify frozen Regexp. * ext/tcltklib/tcltklib.c (ip_init): allocation framework. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2720 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'numeric.c')
-rw-r--r--numeric.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/numeric.c b/numeric.c
index a62f53f748..87d7e986a4 100644
--- a/numeric.c
+++ b/numeric.c
@@ -479,6 +479,16 @@ flo_hash(num)
return INT2FIX(hash);
}
+VALUE
+rb_dbl_cmp(a, b)
+ double a, b;
+{
+ if (a == b) return INT2FIX(0);
+ if (a > b) return INT2FIX(1);
+ if (a < b) return INT2FIX(-1);
+ rb_raise(rb_eFloatDomainError, "comparing NaN");
+}
+
static VALUE
flo_cmp(x, y)
VALUE x, y;
@@ -502,10 +512,7 @@ flo_cmp(x, y)
default:
return rb_num_coerce_bin(x, y);
}
- if (a == b) return INT2FIX(0);
- if (a > b) return INT2FIX(1);
- if (a < b) return INT2FIX(-1);
- rb_raise(rb_eFloatDomainError, "comparing NaN");
+ return rb_dbl_cmp(a, b);
}
static VALUE