]> granicus.if.org Git - php/commitdiff
Reset IMMUTABLE flag when copy_ctor'ing AST
authorNikita Popov <nikic@php.net>
Fri, 29 Apr 2016 20:39:21 +0000 (22:39 +0200)
committerNikita Popov <nikic@php.net>
Fri, 29 Apr 2016 20:39:21 +0000 (22:39 +0200)
Zend/zend_variables.c

index 6f2dd0421c3c9cb93ab113af873b03305f91bac7..01b68c25a4eb6b605a1055b93bdb81b093579815 100644 (file)
@@ -224,12 +224,8 @@ ZEND_API void ZEND_FASTCALL _zval_copy_ctor_func(zval *zvalue ZEND_FILE_LINE_DC)
                CHECK_ZVAL_STRING_REL(Z_STR_P(zvalue));
                Z_STR_P(zvalue) = zend_string_dup(Z_STR_P(zvalue), 0);
        } else if (EXPECTED(Z_TYPE_P(zvalue) == IS_CONSTANT_AST)) {
-               zend_ast_ref *ast = emalloc(sizeof(zend_ast_ref));
-
-               GC_REFCOUNT(ast) = 1;
-               GC_TYPE_INFO(ast) = IS_CONSTANT_AST;
-               ast->ast = zend_ast_copy(Z_ASTVAL_P(zvalue));
-               Z_AST_P(zvalue) = ast;
+               zend_ast *copy = zend_ast_copy(Z_ASTVAL_P(zvalue));
+               ZVAL_NEW_AST(zvalue, copy);
        }
 }