]> granicus.if.org Git - php/commitdiff
Fixed symbol table detaching
authorDmitry Stogov <dmitry@zend.com>
Wed, 26 Mar 2014 20:04:50 +0000 (00:04 +0400)
committerDmitry Stogov <dmitry@zend.com>
Wed, 26 Mar 2014 20:04:50 +0000 (00:04 +0400)
Zend/zend_execute_API.c

index 0980517935664f53aadb525824929ea3ef51c792..b3dfbf8e06a60941568ec43e5d58ae86dbf55e3d 100644 (file)
@@ -1753,8 +1753,12 @@ ZEND_API void zend_detach_symbol_table(TSRMLS_D) /* {{{ */
        
        /* copy real values from CV slots into symbol table */
        for (i = 0; i < op_array->last_var; i++) {
-               zend_hash_update(ht, op_array->vars[i], EX_VAR_NUM(i));
-               ZVAL_UNDEF(EX_VAR_NUM(i));
+               if (Z_TYPE_P(EX_VAR_NUM(i)) == IS_UNDEF) {
+                       zend_hash_del(ht, op_array->vars[i]);
+               } else {
+                       zend_hash_update(ht, op_array->vars[i], EX_VAR_NUM(i));
+                       ZVAL_UNDEF(EX_VAR_NUM(i));
+               }
        }
 }
 /* }}} */