zval_dtor(varname);
}
if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(retval);
+ }
EX_T(opline->result.u.var).var.ptr_ptr = retval;
PZVAL_LOCK(*retval);
switch (type) {
zval_dtor(varname);
}
if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(retval);
+ }
EX_T(opline->result.u.var).var.ptr_ptr = retval;
PZVAL_LOCK(*retval);
switch (type) {
zval_dtor(varname);
}
if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(retval);
+ }
EX_T(opline->result.u.var).var.ptr_ptr = retval;
PZVAL_LOCK(*retval);
switch (type) {
zend_free_op free_op1;
zval *property = &opline->op2.u.constant;
- if (opline->extended_value == ZEND_FETCH_ADD_LOCK && IS_VAR != IS_CV) {
+ if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && IS_VAR != IS_CV) {
PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
}
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+
+ /* We are going to assign the result by reference */
+ if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}
zend_free_op free_op1, free_op2;
zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
- if (opline->extended_value == ZEND_FETCH_ADD_LOCK && IS_VAR != IS_CV) {
+ if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && IS_VAR != IS_CV) {
PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
}
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+
+ /* We are going to assign the result by reference */
+ if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}
zend_free_op free_op1, free_op2;
zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
- if (opline->extended_value == ZEND_FETCH_ADD_LOCK && IS_VAR != IS_CV) {
+ if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && IS_VAR != IS_CV) {
PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
}
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+
+ /* We are going to assign the result by reference */
+ if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}
zend_free_op free_op1;
zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
- if (opline->extended_value == ZEND_FETCH_ADD_LOCK && IS_VAR != IS_CV) {
+ if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && IS_VAR != IS_CV) {
PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
}
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+
+ /* We are going to assign the result by reference */
+ if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}
zend_free_op free_op1;
zval *property = &opline->op2.u.constant;
- if (opline->extended_value == ZEND_FETCH_ADD_LOCK && IS_UNUSED != IS_CV) {
+ if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && IS_UNUSED != IS_CV) {
PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
}
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
+ /* We are going to assign the result by reference */
+ if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}
zend_free_op free_op1, free_op2;
zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
- if (opline->extended_value == ZEND_FETCH_ADD_LOCK && IS_UNUSED != IS_CV) {
+ if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && IS_UNUSED != IS_CV) {
PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
}
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
+ /* We are going to assign the result by reference */
+ if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}
zend_free_op free_op1, free_op2;
zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
- if (opline->extended_value == ZEND_FETCH_ADD_LOCK && IS_UNUSED != IS_CV) {
+ if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && IS_UNUSED != IS_CV) {
PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
}
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
+ /* We are going to assign the result by reference */
+ if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}
zend_free_op free_op1;
zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
- if (opline->extended_value == ZEND_FETCH_ADD_LOCK && IS_UNUSED != IS_CV) {
+ if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && IS_UNUSED != IS_CV) {
PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
}
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
+ /* We are going to assign the result by reference */
+ if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}
zval_dtor(varname);
}
if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(retval);
+ }
EX_T(opline->result.u.var).var.ptr_ptr = retval;
PZVAL_LOCK(*retval);
switch (type) {
zend_free_op free_op1;
zval *property = &opline->op2.u.constant;
- if (opline->extended_value == ZEND_FETCH_ADD_LOCK && IS_CV != IS_CV) {
+ if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && IS_CV != IS_CV) {
PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
}
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
+ /* We are going to assign the result by reference */
+ if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}
zend_free_op free_op1, free_op2;
zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
- if (opline->extended_value == ZEND_FETCH_ADD_LOCK && IS_CV != IS_CV) {
+ if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && IS_CV != IS_CV) {
PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
}
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
+ /* We are going to assign the result by reference */
+ if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}
zend_free_op free_op1, free_op2;
zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
- if (opline->extended_value == ZEND_FETCH_ADD_LOCK && IS_CV != IS_CV) {
+ if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && IS_CV != IS_CV) {
PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
}
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
+ /* We are going to assign the result by reference */
+ if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}
zend_free_op free_op1;
zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
- if (opline->extended_value == ZEND_FETCH_ADD_LOCK && IS_CV != IS_CV) {
+ if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && IS_CV != IS_CV) {
PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
}
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
+ /* We are going to assign the result by reference */
+ if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}