mirror of
https://github.com/php/php-src.git
synced 2024-09-24 11:27:28 +00:00
3ae995f03c
This implements a reduced variant of #1226 with just the following change: -Fatal error: Uncaught exception 'EngineException' with message 'Call to private method foo::bar() from context ''' in %s:%d +Fatal error: Uncaught EngineException: Call to private method foo::bar() from context '' in %s:%d The '' wrapper around messages is very weird if the exception message itself contains ''. Futhermore having the message wrapped in '' doesn't work for the "and defined" suffix of TypeExceptions.
65 lines
1000 B
PHP
65 lines
1000 B
PHP
--TEST--
|
|
Fixed Bug #65784 (Segfault with finally)
|
|
--FILE--
|
|
<?php
|
|
function foo1() {
|
|
try {
|
|
throw new Exception("not catch");
|
|
return true;
|
|
} finally {
|
|
try {
|
|
throw new Exception("catched");
|
|
} catch (Exception $e) {
|
|
}
|
|
}
|
|
}
|
|
try {
|
|
$foo = foo1();
|
|
var_dump($foo);
|
|
} catch (Exception $e) {
|
|
do {
|
|
var_dump($e->getMessage());
|
|
} while ($e = $e->getPrevious());
|
|
}
|
|
|
|
function foo2() {
|
|
try {
|
|
try {
|
|
throw new Exception("catched");
|
|
return true;
|
|
} finally {
|
|
try {
|
|
throw new Exception("catched");
|
|
} catch (Exception $e) {
|
|
}
|
|
}
|
|
} catch (Exception $e) {
|
|
}
|
|
}
|
|
|
|
$foo = foo2();
|
|
var_dump($foo);
|
|
|
|
function foo3() {
|
|
try {
|
|
throw new Exception("not catched");
|
|
return true;
|
|
} finally {
|
|
try {
|
|
throw new NotExists();
|
|
} catch (Exception $e) {
|
|
}
|
|
}
|
|
}
|
|
|
|
$bar = foo3();
|
|
--EXPECTF--
|
|
string(9) "not catch"
|
|
NULL
|
|
|
|
Fatal error: Uncaught EngineException: Class 'NotExists' not found in %sbug65784.php:%d
|
|
Stack trace:
|
|
#0 %s(%d): foo3()
|
|
#1 {main}
|
|
thrown in %sbug65784.php on line %d
|