1
0
mirror of https://github.com/php/php-src.git synced 2026-04-11 01:53:36 +02:00

Make division by zero error check more accurate

For division (rather than modulus) we should check the double
value, otherwise the result might be zero after integer truncation,
but not zero as a floating point value.
This commit is contained in:
Nikita Popov
2020-04-01 14:47:21 +02:00
parent 1ed132e2e5
commit f1dd8b2af0

View File

@@ -7259,7 +7259,8 @@ ZEND_API zend_bool zend_binary_op_produces_error(uint32_t opcode, zval *op1, zva
return 1;
}
if ((opcode == ZEND_DIV || opcode == ZEND_MOD) && zval_get_long(op2) == 0) {
if ((opcode == ZEND_MOD && zval_get_long(op2) == 0)
|| (opcode == ZEND_DIV && zval_get_double(op2) == 0.0)) {
/* Division by zero throws an error. */
return 1;
}