Update the PR #4922 according to #3123.

close #3123
This commit is contained in:
Yukihiro "Matz" Matsumoto
2020-08-18 13:22:28 +09:00
parent ed32b6fcdc
commit ee544dc881
+27 -1
View File
@@ -2315,7 +2315,33 @@ RETRY_TRY_BLOCK:
{
mrb_int x = mrb_fixnum(regs[a]);
mrb_int y = mrb_fixnum(regs[a+1]);
SET_INT_VALUE(regs[a], y ? x / y : 0);
if (y == 0 || (x == MRB_INT_MIN && y == -1)) {
#ifdef MRB_NO_FLOAT
SET_INT_VALUE(regs[a], y ? x / y : 0);
#else
SET_FLOAT_VALUE(mrb, regs[a], (mrb_float)x / (mrb_float)y);
#endif
}
else {
mrb_int div, mod;
if (y < 0) {
if (x < 0)
div = -x / -y;
else
div = - (x / -y);
}
else {
if (x < 0)
div = - (-x / y);
else
div = x / y;
}
mod = x - div*y;
if ((mod < 0 && y > 0) || (mod > 0 && y < 0)) {
div -= 1;
}
SET_INT_VALUE(regs[a], div);
}
}
NEXT;
#ifndef MRB_NO_FLOAT