static zend_always_inline zval *_get_zval_ptr_tmp(zend_uint var, const zend_execute_data *execute_data, zend_free_op *should_free TSRMLS_DC)
{
zval *ret = EX_VAR(var);
-
should_free->var = ret;
+
+ ZEND_ASSERT(Z_TYPE_P(ret) != IS_REFERENCE);
+
return ret;
}
/* separate our value if necessary */
if (value_type == IS_TMP_VAR) {
- ZEND_ASSERT(Z_TYPE_P(value) != IS_REFERENCE);
ZVAL_COPY_VALUE(&tmp, value);
value = &tmp;
} else if (value_type == IS_CONST) {
if (OP1_TYPE == IS_CONST) {
if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) {
value = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv));
+ ZVAL_DEREF(value);
ZVAL_DUP(EX_VAR(opline->result.var), value);
goto constant_fetch_end;
} else if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) {
if (IS_CONST == IS_CONST) {
if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) {
value = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv));
+ ZVAL_DEREF(value);
ZVAL_DUP(EX_VAR(opline->result.var), value);
goto constant_fetch_end;
} else if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) {
if (IS_VAR == IS_CONST) {
if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) {
value = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv));
+ ZVAL_DEREF(value);
ZVAL_DUP(EX_VAR(opline->result.var), value);
goto constant_fetch_end;
} else if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) {
if (IS_UNUSED == IS_CONST) {
if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) {
value = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv));
+ ZVAL_DEREF(value);
ZVAL_DUP(EX_VAR(opline->result.var), value);
goto constant_fetch_end;
} else if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) {