diff options
Diffstat (limited to 'Zend/zend_vm_def.h')
-rw-r--r-- | Zend/zend_vm_def.h | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index ac015aea52..b4f8c83f1b 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -3883,8 +3883,7 @@ ZEND_VM_HANDLER(99, ZEND_FETCH_CONSTANT, VAR|CONST|UNUSED, CONST) ZVAL_DUP(EX_VAR(opline->result.var), value); } else if (Z_STRLEN_P(opline->op2.zv) == sizeof("class")-1 && memcmp(Z_STRVAL_P(opline->op2.zv), "class", sizeof("class") - 1) == 0) { /* "class" is assigned as a case-sensitive keyword from zend_do_resolve_class_name */ - ZVAL_STR(EX_VAR(opline->result.var), ce->name); - zend_string_addref(ce->name); + ZVAL_STR_COPY(EX_VAR(opline->result.var), ce->name); } else { zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL_P(opline->op2.zv)); } @@ -4716,11 +4715,8 @@ ZEND_VM_HANDLER(78, ZEND_FE_FETCH, VAR, ANY) if (opline->extended_value & ZEND_FE_FETCH_WITH_KEY) { if (!p->key) { ZVAL_LONG(EX_VAR((opline+1)->result.var), p->h); - } else if (IS_INTERNED(p->key)) { - ZVAL_INTERNED_STR(EX_VAR((opline+1)->result.var), p->key); } else { - ZVAL_NEW_STR(EX_VAR((opline+1)->result.var), p->key); - GC_REFCOUNT(p->key)++; + ZVAL_STR_COPY(EX_VAR((opline+1)->result.var), p->key); } } break; @@ -4796,12 +4792,7 @@ ZEND_VM_HANDLER(78, ZEND_FE_FETCH, VAR, ANY) } else if (zend_check_property_access(zobj, p->key TSRMLS_CC) == SUCCESS) { if (opline->extended_value & ZEND_FE_FETCH_WITH_KEY) { if (p->key->val[0]) { - if (IS_INTERNED(p->key)) { - ZVAL_INTERNED_STR(EX_VAR((opline+1)->result.var), p->key); - } else { - ZVAL_NEW_STR(EX_VAR((opline+1)->result.var), p->key); - GC_REFCOUNT(p->key)++; - } + ZVAL_STR_COPY(EX_VAR((opline+1)->result.var), p->key); } else { const char *class_name, *prop_name; size_t prop_name_len; |