From 6a6227e0168b059c3ed34c9f0ace2e5dc2364221 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Thu, 27 Jan 2022 00:53:12 +0900 Subject: Shifting zero always results in zero [Bug #18517] --- numeric.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'numeric.c') diff --git a/numeric.c b/numeric.c index 3165556a7f..20ad13d4c2 100644 --- a/numeric.c +++ b/numeric.c @@ -5073,6 +5073,7 @@ rb_fix_lshift(VALUE x, VALUE y) long val, width; val = NUM2LONG(x); + if (!val) return (rb_to_int(y), INT2FIX(0)); if (!FIXNUM_P(y)) return rb_big_lshift(rb_int2big(val), y); width = FIX2LONG(y); @@ -5127,6 +5128,7 @@ rb_fix_rshift(VALUE x, VALUE y) long i, val; val = FIX2LONG(x); + if (!val) return (rb_to_int(y), INT2FIX(0)); if (!FIXNUM_P(y)) return rb_big_rshift(rb_int2big(val), y); i = FIX2LONG(y); -- cgit v1.2.3