aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--numeric.c8
2 files changed, 11 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 268d8d09a1..f06378e08e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sat Mar 26 10:51:58 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (FIXNUM_{POSITIVE,NEGATIVE,ZERO}_P): predict macros
+ only for Fixnum.
+
Sat Mar 26 06:34:24 2016 NARUSE, Yui <naruse@ruby-lang.org>
* localeinit.c (rb_locale_charmap_index): fix prototype.
diff --git a/numeric.c b/numeric.c
index d251742bbc..844c0d3bc1 100644
--- a/numeric.c
+++ b/numeric.c
@@ -173,6 +173,10 @@ compare_with_zero(VALUE num, ID mid)
return r;
}
+#define FIXNUM_POSITIVE_P(num) ((SIGNED_VALUE)(num) > (SIGNED_VALUE)INT2FIX(0))
+#define FIXNUM_NEGATIVE_P(num) ((SIGNED_VALUE)(num) < 0)
+#define FIXNUM_ZERO_P(num) ((num) == INT2FIX(0))
+
static inline int
positive_int_p(VALUE num)
{
@@ -180,7 +184,7 @@ positive_int_p(VALUE num)
if (FIXNUM_P(num)) {
if (method_basic_p(rb_cFixnum))
- return (SIGNED_VALUE)num > 0;
+ return FIXNUM_POSITIVE_P(num);
}
else if (RB_TYPE_P(num, T_BIGNUM)) {
if (method_basic_p(rb_cBignum))
@@ -196,7 +200,7 @@ negative_int_p(VALUE num)
if (FIXNUM_P(num)) {
if (method_basic_p(rb_cFixnum))
- return (SIGNED_VALUE)num < 0;
+ return FIXNUM_NEGATIVE_P(num);
}
else if (RB_TYPE_P(num, T_BIGNUM)) {
if (method_basic_p(rb_cBignum))