diff options
Diffstat (limited to 'tests/lang/bug22231.phpt')
-rw-r--r-- | tests/lang/bug22231.phpt | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/lang/bug22231.phpt b/tests/lang/bug22231.phpt new file mode 100644 index 0000000000..0d4d19d2e5 --- /dev/null +++ b/tests/lang/bug22231.phpt @@ -0,0 +1,39 @@ +--TEST-- +Bug #22231 (segfault when returning a global variable by reference) +--FILE-- +<?php +class foo { + var $fubar = 'fubar'; +} + +function &foo(){ + $GLOBALS['foo'] = &new foo(); + return $GLOBALS['foo']; +} +$bar = &foo(); +var_dump($bar); +var_dump($bar->fubar); +unset($bar); +$bar = &foo(); +var_dump($bar->fubar); + +$foo = &foo(); +var_dump($foo); +var_dump($foo->fubar); +unset($foo); +$foo = &foo(); +var_dump($foo->fubar); +?> +--EXPECT-- +object(foo)(1) { + ["fubar"]=> + string(5) "fubar" +} +string(5) "fubar" +string(5) "fubar" +object(foo)(1) { + ["fubar"]=> + string(5) "fubar" +} +string(5) "fubar" +string(5) "fubar" |