diff options
author | Xinchen Hui <laruence@gmail.com> | 2013-12-13 01:45:45 +0800 |
---|---|---|
committer | Xinchen Hui <laruence@gmail.com> | 2013-12-13 01:45:45 +0800 |
commit | dde552f2ee921550646c4236471c1252a9534b52 (patch) | |
tree | c335cbee3cf22a38a1161c7b8bac32b873e31e1c | |
parent | 54213b462d725aa10088909feceac63aaa1896d8 (diff) | |
download | php-git-dde552f2ee921550646c4236471c1252a9534b52.tar.gz |
Add Tests for #65784 in 5.5
-rw-r--r-- | Zend/tests/bug65784.phpt | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/Zend/tests/bug65784.phpt b/Zend/tests/bug65784.phpt new file mode 100644 index 0000000000..adc34113a5 --- /dev/null +++ b/Zend/tests/bug65784.phpt @@ -0,0 +1,62 @@ +--TEST-- +Fixed Bug #65784 (Segfault with finally) +--XFAIL-- +This bug is not fixed in 5.5 due to ABI BC +--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: Class 'NotExists' not found in %sbug65784.php on line %d |