Revision: 4331 http://trac.macosforge.org/projects/ruby/changeset/4331 Author: lsansonetti@apple.com Date: 2010-07-08 14:20:24 -0700 (Thu, 08 Jul 2010) Log Message: ----------- fixed bignum promotion when multiplying fixnums Modified Paths: -------------- MacRuby/trunk/kernel.c Modified: MacRuby/trunk/kernel.c =================================================================== --- MacRuby/trunk/kernel.c 2010-07-08 03:07:31 UTC (rev 4330) +++ MacRuby/trunk/kernel.c 2010-07-08 21:20:24 UTC (rev 4331) @@ -373,8 +373,13 @@ { if (overriden == 0 && NUMERIC_IMM_P(left) && NUMERIC_IMM_P(right)) { if (FIXNUM_P(left) && FIXNUM_P(right)) { - const long res = FIX2LONG(left) * FIX2LONG(right); - if (FIXABLE(res)) { + const long a = FIX2LONG(left); + if (a == 0) { + return left; + } + const long b = FIX2LONG(right); + const long res = a * b; + if (FIXABLE(res) && res / a == b) { return LONG2FIX(res); } }
participants (1)
-
source_changes@macosforge.org