|
|
|
@ -1280,6 +1280,9 @@ static int zend_fetch_var_address_helper_SPEC_CONST(int type, ZEND_OPCODE_HANDLE |
|
|
|
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) { |
|
|
|
@ -4354,6 +4357,9 @@ static int zend_fetch_var_address_helper_SPEC_TMP(int type, ZEND_OPCODE_HANDLER_ |
|
|
|
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) { |
|
|
|
@ -7410,6 +7416,9 @@ static int zend_fetch_var_address_helper_SPEC_VAR(int type, ZEND_OPCODE_HANDLER_ |
|
|
|
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) { |
|
|
|
@ -9392,7 +9401,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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; |
|
|
|
} |
|
|
|
@ -9412,6 +9421,14 @@ static int ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -11043,7 +11060,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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; |
|
|
|
} |
|
|
|
@ -11063,6 +11080,14 @@ static int ZEND_FETCH_OBJ_W_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -12630,7 +12655,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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; |
|
|
|
} |
|
|
|
@ -12650,6 +12675,14 @@ static int ZEND_FETCH_OBJ_W_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -14786,7 +14819,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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; |
|
|
|
} |
|
|
|
@ -14806,6 +14839,14 @@ static int ZEND_FETCH_OBJ_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -16117,7 +16158,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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; |
|
|
|
} |
|
|
|
@ -16137,6 +16178,13 @@ static int ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -17149,7 +17197,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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; |
|
|
|
} |
|
|
|
@ -17169,6 +17217,13 @@ static int ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -18115,7 +18170,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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; |
|
|
|
} |
|
|
|
@ -18135,6 +18190,13 @@ static int ZEND_FETCH_OBJ_W_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -19346,7 +19408,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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; |
|
|
|
} |
|
|
|
@ -19366,6 +19428,13 @@ static int ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -20085,6 +20154,9 @@ static int zend_fetch_var_address_helper_SPEC_CV(int type, ZEND_OPCODE_HANDLER_A |
|
|
|
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) { |
|
|
|
@ -21903,7 +21975,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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; |
|
|
|
} |
|
|
|
@ -21923,6 +21995,13 @@ static int ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -23389,7 +23468,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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; |
|
|
|
} |
|
|
|
@ -23409,6 +23488,13 @@ static int ZEND_FETCH_OBJ_W_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -24878,7 +24964,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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; |
|
|
|
} |
|
|
|
@ -24898,6 +24984,13 @@ static int ZEND_FETCH_OBJ_W_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -26844,7 +26937,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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; |
|
|
|
} |
|
|
|
@ -26864,6 +26957,13 @@ static int ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
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(); |
|
|
|
} |
|
|
|
|
|
|
|
|