mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
Fixed bug #76536 (PHP crashes with core dump when throwing exception in error handler). (Laruence)
This commit is contained in:
parent
d1b1866a3a
commit
1f6b842af4
4
NEWS
4
NEWS
@ -18,6 +18,10 @@ PHP NEWS
|
|||||||
- phpdbg:
|
- phpdbg:
|
||||||
. Fix arginfo wrt. optional/required parameters. (cmb)
|
. Fix arginfo wrt. optional/required parameters. (cmb)
|
||||||
|
|
||||||
|
- Reflection:
|
||||||
|
. Fixed bug #76536 (PHP crashes with core dump when throwing exception in
|
||||||
|
error handler). (Laruence)
|
||||||
|
|
||||||
- Standard:
|
- Standard:
|
||||||
. Fixed bug #76505 (array_merge_recursive() is duplicating sub-array keys).
|
. Fixed bug #76505 (array_merge_recursive() is duplicating sub-array keys).
|
||||||
(Laruence)
|
(Laruence)
|
||||||
|
@ -4617,7 +4617,7 @@ ZEND_METHOD(reflection_class, getConstants)
|
|||||||
ZEND_HASH_FOREACH_STR_KEY_PTR(&ce->constants_table, key, c) {
|
ZEND_HASH_FOREACH_STR_KEY_PTR(&ce->constants_table, key, c) {
|
||||||
if (UNEXPECTED(zval_update_constant_ex(&c->value, ce) != SUCCESS)) {
|
if (UNEXPECTED(zval_update_constant_ex(&c->value, ce) != SUCCESS)) {
|
||||||
zend_array_destroy(Z_ARRVAL_P(return_value));
|
zend_array_destroy(Z_ARRVAL_P(return_value));
|
||||||
return;
|
RETURN_NULL();
|
||||||
}
|
}
|
||||||
val = zend_hash_add_new(Z_ARRVAL_P(return_value), key, &c->value);
|
val = zend_hash_add_new(Z_ARRVAL_P(return_value), key, &c->value);
|
||||||
Z_TRY_ADDREF_P(val);
|
Z_TRY_ADDREF_P(val);
|
||||||
|
20
ext/reflection/tests/bug76536.phpt
Normal file
20
ext/reflection/tests/bug76536.phpt
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
--TEST--
|
||||||
|
Bug #76536 (PHP crashes with core dump when throwing exception in error handler)
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
class SomeConstants {const SOME_CONSTANT = SOME_NONSENSE;}
|
||||||
|
|
||||||
|
function handleError() {throw new ErrorException();}
|
||||||
|
|
||||||
|
set_error_handler('handleError');
|
||||||
|
set_exception_handler('handleError');
|
||||||
|
|
||||||
|
$r = new \ReflectionClass(SomeConstants::class);
|
||||||
|
$r->getConstants();
|
||||||
|
?>
|
||||||
|
--EXPECTF--
|
||||||
|
Fatal error: Uncaught ErrorException in %sbug76536.php:%d
|
||||||
|
Stack trace:
|
||||||
|
#0 [internal function]: handleError(Object(ErrorException))
|
||||||
|
#1 {main}
|
||||||
|
thrown in %sbug76536.php on line %d
|
Loading…
Reference in New Issue
Block a user