bug22231.phpt 764 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. --TEST--
  2. Bug #22231 (segfault when returning a global variable by reference)
  3. --INI--
  4. error_reporting=E_ALL | E_DEPRECATED
  5. --FILE--
  6. <?php
  7. class foo {
  8. public $fubar = 'fubar';
  9. }
  10. function &foo(){
  11. $GLOBALS['foo'] = &new foo();
  12. return $GLOBALS['foo'];
  13. }
  14. $bar = &foo();
  15. var_dump($bar);
  16. var_dump($bar->fubar);
  17. unset($bar);
  18. $bar = &foo();
  19. var_dump($bar->fubar);
  20. $foo = &foo();
  21. var_dump($foo);
  22. var_dump($foo->fubar);
  23. unset($foo);
  24. $foo = &foo();
  25. var_dump($foo->fubar);
  26. ?>
  27. --EXPECTF--
  28. Deprecated: Assigning the return value of new by reference is deprecated in %s on line %d
  29. object(foo)#%d (1) {
  30. ["fubar"]=>
  31. string(5) "fubar"
  32. }
  33. string(5) "fubar"
  34. string(5) "fubar"
  35. object(foo)#%d (1) {
  36. ["fubar"]=>
  37. string(5) "fubar"
  38. }
  39. string(5) "fubar"
  40. string(5) "fubar"