diff options
Diffstat (limited to 'Zend/tests/bug26698.phpt')
-rwxr-xr-x | Zend/tests/bug26698.phpt | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/Zend/tests/bug26698.phpt b/Zend/tests/bug26698.phpt new file mode 100755 index 0000000000..c55cb596cd --- /dev/null +++ b/Zend/tests/bug26698.phpt @@ -0,0 +1,71 @@ +--TEST-- +Bug #26698 (Thrown exceptions while evaluting argument to pass as parameter crash PHP) +--FILE-- +<?php + +class Object +{ + function getNone() + { + throw new Exception('NONE'); + } +} + +class Proxy +{ + function three($a, $b, $c) + { + } + + function callOne() + { + try + { + $res = new Object(); + $this->three($res->getNone()); + } + catch(Exception $e) + { + echo 'Caught: '.$e->getMessage()."\n"; + } + } + + function callTwo() + { + try + { + $res = new Object(); + $this->three(1, $res->getNone()); + } + catch(Exception $e) + { + echo 'Caught: '.$e->getMessage()."\n"; + } + } + + function callThree() + { + try + { + $res = new Object(); + $this->three(1, 2, $res->getNone()); + } + catch(Exception $e) + { + echo 'Caught: '.$e->getMessage()."\n"; + } + } +} + +$p = new Proxy(); + +$p->callOne(); +$p->callTwo(); +$p->callThree(); +?> +===DONE=== +--EXPECT-- +Caught: NONE +Caught: NONE +Caught: NONE +===DONE=== |