diff options
-rw-r--r-- | Zend/tests/bug78239.phpt | 30 | ||||
-rw-r--r-- | Zend/zend_execute_API.c | 1 |
2 files changed, 31 insertions, 0 deletions
diff --git a/Zend/tests/bug78239.phpt b/Zend/tests/bug78239.phpt new file mode 100644 index 0000000000..94908a785b --- /dev/null +++ b/Zend/tests/bug78239.phpt @@ -0,0 +1,30 @@ +--TEST-- +Bug #78239: Deprecation notice during string conversion converted to exception hangs +--FILE-- +<?php +function handleError($level, $message, $file = '', $line = 0, $context = []) +{ + throw new ErrorException($message, 0, $level, $file, $line); +} + +set_error_handler('handleError'); + +class A +{ + + public function abc(): bool + { + return false; + } +} + +$r = new ReflectionMethod("A", "abc"); +(string)$r->getReturnType() ?: ""; + +?> +--EXPECTF-- +Fatal error: Uncaught ErrorException: Function ReflectionType::__toString() is deprecated in %s:%d +Stack trace: +#0 %s(%d): handleError(%s) +#1 {main} + thrown in %s on line %d diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 1bd462712d..a3dfac39a6 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -722,6 +722,7 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache) / zend_vm_stack_free_call_frame(call); if (EG(current_execute_data) == &dummy_execute_data) { EG(current_execute_data) = dummy_execute_data.prev_execute_data; + zend_rethrow_exception(EG(current_execute_data)); } return FAILURE; } |