summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Jones <sixd@php.net>2013-09-02 05:40:40 -0700
committerChristopher Jones <sixd@php.net>2013-09-02 05:40:40 -0700
commit2452e7b68067b053f289aec46864b77c2a158a68 (patch)
treea4488a9722c96997a54a4d1956210439c4c5eb6f
parentc8b0da6ef74100b476379ba40367c30564da6582 (diff)
parentb2ee1b629e6b48b43fa6d17a040a2a0ee69caddc (diff)
downloadphp-git-2452e7b68067b053f289aec46864b77c2a158a68.tar.gz
Merge branch 'PHP-5.5' of https://git.php.net/repository/php-src into PHP-5.5
* 'PHP-5.5' of https://git.php.net/repository/php-src: Typo.... Add a XFAIL test for #64896
-rw-r--r--Zend/tests/bug64896.phpt47
1 files changed, 47 insertions, 0 deletions
diff --git a/Zend/tests/bug64896.phpt b/Zend/tests/bug64896.phpt
new file mode 100644
index 0000000000..3e955bbece
--- /dev/null
+++ b/Zend/tests/bug64896.phpt
@@ -0,0 +1,47 @@
+--TEST--
+Bug #64896 (Segfault with gc_collect_cycles using unserialize on certain objects)
+--XFAIL--
+We can not fix this bug without a significant (performace slow down) change to gc
+--FILE--
+<?php
+$bar = NULL;
+class bad
+{
+ private $_private = array();
+
+ public function __construct()
+ {
+ $this->_private[] = 'php';
+ }
+
+ public function __destruct()
+ {
+ global $bar;
+ $bar = $this;
+ }
+}
+
+$foo = new stdclass;
+$foo->foo = $foo;
+$foo->bad = new bad;
+
+gc_disable();
+
+unserialize(serialize($foo));
+gc_collect_cycles();
+var_dump($bar);
+/* will output:
+object(bad)#4 (1) {
+ ["_private":"bad":private]=>
+ &UNKNOWN:0
+}
+*/
+?>
+--EXPECTF--
+bject(bad)#%d (1) {
+ ["_private":"bad":private]=>
+ array(1) {
+ [0]=>
+ string(3) "php"
+ }
+}