]> granicus.if.org Git - php/commitdiff
Fixed reference handling in zif_unserialize
authorXinchen Hui <laruence@gmail.com>
Wed, 26 Feb 2014 03:21:52 +0000 (11:21 +0800)
committerXinchen Hui <laruence@gmail.com>
Wed, 26 Feb 2014 03:21:52 +0000 (11:21 +0800)
ext/standard/var.c

index 6525b770e7fe47247165f1362a613a6c14cd9db2..219cd6badb572c1c9bec9d53aee7d7a8aec6acec 100644 (file)
@@ -978,9 +978,9 @@ PHP_FUNCTION(unserialize)
        }
        PHP_VAR_UNSERIALIZE_DESTROY(var_hash);
 
-       if (consumed) {
-               zval_dtor(consumed);
-               ZVAL_LONG(consumed, ((char*)p) - buf);
+       if (consumed && Z_ISREF_P(consumed)) {
+               zval_dtor(Z_REFVAL_P(consumed));
+               ZVAL_LONG(Z_REFVAL_P(consumed), ((char*)p) - buf);
        }
 }
 /* }}} */