overflow fix in modulo and division
This commit is contained in:
parent
d23b238093
commit
887f121555
@ -69,10 +69,12 @@ bool SQVM::ARITH_OP(SQUnsignedInteger op,SQObjectPtr &trg,const SQObjectPtr &o1,
|
||||
case '+': res = i1 + i2; break;
|
||||
case '-': res = i1 - i2; break;
|
||||
case '/': if (i2 == 0) { Raise_Error(_SC("division by zero")); return false; }
|
||||
else if (i2 == -1 && i1 == INT_MIN) { Raise_Error(_SC("integer overflow")); return false; }
|
||||
res = i1 / i2;
|
||||
break;
|
||||
case '*': res = i1 * i2; break;
|
||||
case '%': if (i2 == 0) { Raise_Error(_SC("modulo by zero")); return false; }
|
||||
else if (i2 == -1 && i1 == INT_MIN) { res = 0; break; }
|
||||
res = i1 % i2;
|
||||
break;
|
||||
default: res = 0xDEADBEEF;
|
||||
|
Loading…
x
Reference in New Issue
Block a user