summaryrefslogtreecommitdiff
path: root/Zend/zend_ast.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2017-11-03 21:02:55 +0300
committerDmitry Stogov <dmitry@zend.com>2017-11-03 21:02:55 +0300
commitd3fa900780994ae812b5314900556a7f1bfb916e (patch)
tree3643d8d47dc9d0106b52816b4fbc969340cb5098 /Zend/zend_ast.c
parent7fba7209e1d8409aaea236527125999b8f480785 (diff)
downloadphp-git-d3fa900780994ae812b5314900556a7f1bfb916e.tar.gz
Removed workaraouns for inconsistent zvals (REFCOUNTED+INTERNED). They should be fixed now.
Diffstat (limited to 'Zend/zend_ast.c')
-rw-r--r--Zend/zend_ast.c13
1 files changed, 1 insertions, 12 deletions
diff --git a/Zend/zend_ast.c b/Zend/zend_ast.c
index f4e7c09a83..68db0e023f 100644
--- a/Zend/zend_ast.c
+++ b/Zend/zend_ast.c
@@ -557,24 +557,13 @@ ZEND_API zend_ast_ref *zend_ast_copy(zend_ast *ast)
}
ZEND_API void zend_ast_destroy(zend_ast *ast) {
- zval *zv;
-
if (!ast) {
return;
}
switch (ast->kind) {
case ZEND_AST_ZVAL:
- /* Destroy value without using GC: When opcache moves arrays into SHM it will
- * free the zend_array structure, so references to it from outside the op array
- * become invalid. GC would cause such a reference in the root buffer. */
- zv = zend_ast_get_zval(ast);
- if (Z_TYPE_P(zv) == IS_STRING) {
- /* Compiler may keep REFCOUNTED zvals with INTERNED strings */
- zend_string_release(Z_STR_P(zv));
- } else {
- zval_ptr_dtor_nogc(zv);
- }
+ zval_ptr_dtor_nogc(zend_ast_get_zval(ast));
break;
case ZEND_AST_CONSTANT:
zend_string_release(zend_ast_get_constant_name(ast));