summaryrefslogtreecommitdiff
path: root/numeric.c
diff options
context:
space:
mode:
Diffstat (limited to 'numeric.c')
-rw-r--r--numeric.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/numeric.c b/numeric.c
index d1c016e708..77b52ffec9 100644
--- a/numeric.c
+++ b/numeric.c
@@ -63,6 +63,7 @@ coerce_rescue(x)
STR2CSTR(rb_inspect(x[1])):
rb_class2name(CLASS_OF(x[1])),
rb_class2name(CLASS_OF(x[0])));
+ return Qnil; /* dummy */
}
static void
@@ -657,6 +658,7 @@ fail_to_integer(val)
{
rb_raise(rb_eTypeError, "failed to convert %s into Integer",
rb_class2name(CLASS_OF(val)));
+ return Qnil; /* dummy */
}
long
@@ -1169,12 +1171,10 @@ fix_rshift(x, y)
long i, val;
i = NUM2LONG(y);
- if (i < sizeof(long) * 8) {
- val = RSHIFT(FIX2LONG(x), i);
- return INT2FIX(val);
- }
-
- return INT2FIX(0);
+ if (i < 0)
+ return fix_lshift(x, INT2FIX(-i));
+ val = RSHIFT(FIX2LONG(x), i);
+ return INT2FIX(val);
}
static VALUE