bug64896.phpt 736 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. --TEST--
  2. Bug #64896 (Segfault with gc_collect_cycles using unserialize on certain objects)
  3. --XFAIL--
  4. We can not fix this bug without a significant (performace slow down) change to gc
  5. --FILE--
  6. <?php
  7. $bar = NULL;
  8. class bad
  9. {
  10. private $_private = array();
  11. public function __construct()
  12. {
  13. $this->_private[] = 'php';
  14. }
  15. public function __destruct()
  16. {
  17. global $bar;
  18. $bar = $this;
  19. }
  20. }
  21. $foo = new stdclass;
  22. $foo->foo = $foo;
  23. $foo->bad = new bad;
  24. gc_disable();
  25. unserialize(serialize($foo));
  26. gc_collect_cycles();
  27. var_dump($bar);
  28. /* will output:
  29. object(bad)#4 (1) {
  30. ["_private":"bad":private]=>
  31. &UNKNOWN:0
  32. }
  33. */
  34. ?>
  35. --EXPECTF--
  36. bject(bad)#%d (1) {
  37. ["_private":"bad":private]=>
  38. array(1) {
  39. [0]=>
  40. string(3) "php"
  41. }
  42. }