Commit:    e88cdaa0143aacd2d765eb0560452ea28e327e41
Author:    Xinchen Hui <larue...@php.net>         Thu, 18 Oct 2012 20:10:35 
+0800
Parents:   8bd5e15ff7a57791956c4017ee8fb4a8ac0d8d2e
Branches:  PHP-5.3

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=e88cdaa0143aacd2d765eb0560452ea28e327e41

Log:
better fix for #63055

Bugs:
https://bugs.php.net/63055

Changed paths:
  M  Zend/zend_variables.c
  M  ext/pcre/php_pcre.c


Diff:
diff --git a/Zend/zend_variables.c b/Zend/zend_variables.c
index c790108..2b2ca0f 100644
--- a/Zend/zend_variables.c
+++ b/Zend/zend_variables.c
@@ -40,6 +40,8 @@ ZEND_API void _zval_dtor_func(zval *zvalue ZEND_FILE_LINE_DC)
                                TSRMLS_FETCH();
 
                                if (zvalue->value.ht && (zvalue->value.ht != 
&EG(symbol_table))) {
+                                       /* break possible cycles */
+                                       Z_TYPE_P(zvalue) = IS_NULL;
                                        zend_hash_destroy(zvalue->value.ht);
                                        FREE_HASHTABLE(zvalue->value.ht);
                                }
diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c
index 1af8151..736a708 100644
--- a/ext/pcre/php_pcre.c
+++ b/ext/pcre/php_pcre.c
@@ -547,9 +547,8 @@ PHPAPI void php_pcre_match_impl(pcre_cache_entry *pce, char 
*subject, int subjec
 
        /* Overwrite the passed-in value for subpatterns with an empty array. */
        if (subpats != NULL) {
-               zval garbage = *subpats;
+        zval_dtor(subpats);
                array_init(subpats);
-               zval_dtor(&garbage);
        }
 
        subpats_order = global ? PREG_PATTERN_ORDER : 0;


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to