diff --git a/Zend/tests/float_to_int/union_int_string_type_arg_promote_exception.phpt b/Zend/tests/float_to_int/union_int_string_type_arg_promote_exception.phpt new file mode 100644 index 0000000000000..3f720ba2b47f6 --- /dev/null +++ b/Zend/tests/float_to_int/union_int_string_type_arg_promote_exception.phpt @@ -0,0 +1,20 @@ +--TEST-- +Promote deprecation warning for int|string type into exception +--FILE-- +getMessage(), "\n"; +} + +?> +--EXPECT-- +Implicit conversion from float 0.5 to int loses precision diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index aa07f9b41b036..fbb674540d394 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -726,6 +726,8 @@ static bool zend_verify_weak_scalar_type_hint(uint32_t type_mask, zval *arg) zval_ptr_dtor(arg); ZVAL_LONG(arg, lval); return 1; + } else if (UNEXPECTED(EG(exception))) { + return 0; } } if ((type_mask & MAY_BE_DOUBLE) && zend_parse_arg_double_weak(arg, &dval, 0)) {