bug64896.phpt 721 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. --TEST--
  2. Bug #64896 (Segfault with gc_collect_cycles using unserialize on certain objects)
  3. --INI--
  4. zend.enable_gc=1
  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. gc_enable();
  29. /* will output:
  30. object(bad)#4 (1) {
  31. ["_private":"bad":private]=>
  32. &UNKNOWN:0
  33. }
  34. */
  35. ?>
  36. --EXPECTF--
  37. object(bad)#%d (1) {
  38. ["_private":"bad":private]=>
  39. array(1) {
  40. [0]=>
  41. string(3) "php"
  42. }
  43. }