diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-07-03 11:00:23 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-07-03 11:00:23 +0200 |
commit | 105300afe497530c96ea5bdce215ae5571cd619a (patch) | |
tree | bc81187562497fe5052a40fb53e12782dc118906 | |
parent | fa1a03f7a2fb62d44180a91f13409d21a9ba0672 (diff) | |
parent | 2bf880db2c624a32f130e0da309b22dcf782609d (diff) | |
download | php-git-105300afe497530c96ea5bdce215ae5571cd619a.tar.gz |
Merge branch 'PHP-7.4'
-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; } |