mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Fix GH-17408: Assertion failure Zend/zend_exceptions.c
`zend_test_create_throwing_resource` sets the exception in the `test` call frame and unwinds to `main`. It then throws for the `resource` variable and verifies that the exception opline is set. However, it wasn't set in `main`, it was set at the `test` call frame and rethrown later. The assertion is too conservative, but the end result is right, so drop the assertion. Closes GH-17533. Co-authored-by: Ilija Tovilo <ilija.tovilo@me.com>
This commit is contained in:
parent
191e16b703
commit
5344bcca97
3 changed files with 24 additions and 1 deletions
2
NEWS
2
NEWS
|
@ -12,6 +12,8 @@ PHP NEWS
|
||||||
. Fixed NULL arithmetic during system program execution on Windows. (cmb,
|
. Fixed NULL arithmetic during system program execution on Windows. (cmb,
|
||||||
nielsdos)
|
nielsdos)
|
||||||
. Fixed potential OOB when checking for trailing spaces on Windows. (cmb)
|
. Fixed potential OOB when checking for trailing spaces on Windows. (cmb)
|
||||||
|
. Fixed bug GH-17408 (Assertion failure Zend/zend_exceptions.c).
|
||||||
|
(nielsdos, ilutov)
|
||||||
|
|
||||||
- DOM:
|
- DOM:
|
||||||
. Fixed bug GH-17500 (Segfault with requesting nodeName on nameless doctype).
|
. Fixed bug GH-17500 (Segfault with requesting nodeName on nameless doctype).
|
||||||
|
|
|
@ -193,7 +193,6 @@ ZEND_API ZEND_COLD void zend_throw_exception_internal(zend_object *exception) /*
|
||||||
zend_exception_set_previous(exception, EG(exception));
|
zend_exception_set_previous(exception, EG(exception));
|
||||||
EG(exception) = exception;
|
EG(exception) = exception;
|
||||||
if (previous) {
|
if (previous) {
|
||||||
ZEND_ASSERT(is_handle_exception_set() && "HANDLE_EXCEPTION not set?");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
22
ext/zend_test/tests/gh17408.phpt
Normal file
22
ext/zend_test/tests/gh17408.phpt
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
--TEST--
|
||||||
|
GH-17408 (Assertion failure Zend/zend_exceptions.c)
|
||||||
|
--EXTENSIONS--
|
||||||
|
zend_test
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
function test() {
|
||||||
|
$resource = zend_test_create_throwing_resource();
|
||||||
|
zend_test_create_throwing_resource();
|
||||||
|
}
|
||||||
|
test();
|
||||||
|
?>
|
||||||
|
--EXPECTF--
|
||||||
|
Fatal error: Uncaught Exception: Throwing resource destructor called in %s:%d
|
||||||
|
Stack trace:
|
||||||
|
#0 %s(%d): test()
|
||||||
|
#1 {main}
|
||||||
|
|
||||||
|
Next Exception: Throwing resource destructor called in %s:%d
|
||||||
|
Stack trace:
|
||||||
|
#0 {main}
|
||||||
|
thrown in %s on line %d
|
Loading…
Add table
Add a link
Reference in a new issue