From: Dmitry Stogov Date: Tue, 4 Mar 2014 13:23:23 +0000 (+0400) Subject: Fixed dereferencing of value returned from function (foo()[1] = ...) X-Git-Tag: POST_PHPNG_MERGE~412^2~428 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=38151a38ec31af33e10513cc39e7cac8f819f120;p=php Fixed dereferencing of value returned from function (foo()[1] = ...) --- diff --git a/Zend/zend.h b/Zend/zend.h index 922d937eb8..27caadc51c 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -774,9 +774,7 @@ END_EXTERN_C() } while (0) #define READY_TO_DESTROY(zv) \ - (Z_REFCOUNT_P(zv) == 1 && \ - (Z_TYPE_P(zv) != IS_OBJECT || \ - zend_objects_store_get_refcount(zv TSRMLS_CC) == 1)) + (Z_REFCOUNTED_P(zv) && Z_REFCOUNT_P(zv) == 1) #define ZEND_MAX_RESERVED_RESOURCES 4 diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index a2d4be204a..955249acb4 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -113,20 +113,11 @@ static zend_always_inline void zend_pzval_unlock_free_func(zval *z TSRMLS_DC) #define PZVAL_LOCK(z) if (Z_REFCOUNTED_P(z)) Z_ADDREF_P((z)) #define SELECTIVE_PZVAL_LOCK(pzv, opline) if (RETURN_VALUE_USED(opline)) { PZVAL_LOCK(pzv); } -#define EXTRACT_ZVAL_PTR(t) do { \ - temp_variable *__t = (t); \ - __t->var.ptr = *__t->var.ptr_ptr; \ - __t->var.ptr_ptr = &__t->var.ptr; \ - if (!PZVAL_IS_REF(__t->var.ptr) && \ - Z_REFCOUNT_P(__t->var.ptr) > 2) { \ - SEPARATE_ZVAL(__t->var.ptr_ptr); \ - } \ - } while (0) - -#define AI_SET_PTR(t, val) do { \ - temp_variable *__t = (t); \ - __t->var.ptr = (val); \ - __t->var.ptr_ptr = &__t->var.ptr; \ +#define EXTRACT_ZVAL_PTR(zv) do { \ + zval *__zv = (zv); \ + if (Z_TYPE_P(__zv) == IS_INDIRECT) { \ + ZVAL_COPY_VALUE(__zv, Z_INDIRECT_P(__zv)); \ + } \ } while (0) #define FREE_OP(should_free) \ diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 8c272a5494..11f3e4c2fc 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -1188,9 +1188,9 @@ ZEND_VM_HANDLER(84, ZEND_FETCH_DIM_W, VAR|CV, CONST|TMP|VAR|UNUSED|CV) } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, GET_OP2_ZVAL_PTR(BP_VAR_R), OP2_TYPE, BP_VAR_W TSRMLS_CC); FREE_OP2(); -//??? if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); -//??? } + if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } FREE_OP1_VAR_PTR(); @@ -1230,9 +1230,9 @@ ZEND_VM_HANDLER(87, ZEND_FETCH_DIM_RW, VAR|CV, CONST|TMP|VAR|UNUSED|CV) } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, GET_OP2_ZVAL_PTR(BP_VAR_R), OP2_TYPE, BP_VAR_RW TSRMLS_CC); FREE_OP2(); -//??? if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } FREE_OP1_VAR_PTR(); CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -1267,9 +1267,9 @@ ZEND_VM_HANDLER(93, ZEND_FETCH_DIM_FUNC_ARG, VAR|CV, CONST|TMP|VAR|UNUSED|CV) zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, GET_OP2_ZVAL_PTR(BP_VAR_R), OP2_TYPE, BP_VAR_W TSRMLS_CC); -//??? if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } FREE_OP2(); FREE_OP1_VAR_PTR(); } else { @@ -1302,9 +1302,9 @@ ZEND_VM_HANDLER(96, ZEND_FETCH_DIM_UNSET, VAR|CV, CONST|TMP|VAR|CV) } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, GET_OP2_ZVAL_PTR(BP_VAR_R), OP2_TYPE, BP_VAR_UNSET TSRMLS_CC); FREE_OP2(); -//??? if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } FREE_OP1_VAR_PTR(); if (UNEXPECTED(Z_TYPE_P(EX_VAR(opline->result.var)) == IS_STR_OFFSET)) { zend_error_noreturn(E_ERROR, "Cannot unset string offsets"); @@ -1402,9 +1402,9 @@ ZEND_VM_HANDLER(85, ZEND_FETCH_OBJ_W, VAR|UNUSED|CV, CONST|TMP|VAR|CV) FREE_OP2(); //??? } -//??? if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } FREE_OP1_VAR_PTR(); /* We are going to assign the result by reference */ @@ -1453,9 +1453,9 @@ ZEND_VM_HANDLER(88, ZEND_FETCH_OBJ_RW, VAR|UNUSED|CV, CONST|TMP|VAR|CV) FREE_OP2(); //??? } -//??? if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } FREE_OP1_VAR_PTR(); CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -1530,9 +1530,9 @@ ZEND_VM_HANDLER(94, ZEND_FETCH_OBJ_FUNC_ARG, VAR|UNUSED|CV, CONST|TMP|VAR|CV) FREE_OP2(); //??? } -//??? if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } FREE_OP1_VAR_PTR(); CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -1567,9 +1567,9 @@ ZEND_VM_HANDLER(97, ZEND_FETCH_OBJ_UNSET, VAR|UNUSED|CV, CONST|TMP|VAR|CV) FREE_OP2(); //??? } -//??? if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } FREE_OP1_VAR_PTR(); retval_ptr = EX_VAR(opline->result.var); diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index a1779caf77..cbe5aa07ac 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -14517,9 +14517,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HA } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_W TSRMLS_CC); -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; @@ -14559,9 +14559,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_H } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_RW TSRMLS_CC); -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -14596,9 +14596,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST_HANDLER(ZEND_OP zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_W TSRMLS_CC); -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; } else { @@ -14631,9 +14631,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST_HANDLER(ZEND_OPCOD } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_UNSET TSRMLS_CC); -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; if (UNEXPECTED(Z_TYPE_P(EX_VAR(opline->result.var)) == IS_STR_OFFSET)) { zend_error_noreturn(E_ERROR, "Cannot unset string offsets"); @@ -14731,9 +14731,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HA //??? } -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; /* We are going to assign the result by reference */ @@ -14782,9 +14782,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_H //??? } -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -14859,9 +14859,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST_HANDLER(ZEND_OP //??? } -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -14896,9 +14896,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST_HANDLER(ZEND_OPCOD //??? } -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; retval_ptr = EX_VAR(opline->result.var); @@ -16803,9 +16803,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HAND } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_W TSRMLS_CC); zval_dtor(free_op2.var); -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; @@ -16845,9 +16845,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HAN } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_RW TSRMLS_CC); zval_dtor(free_op2.var); -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -16882,9 +16882,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMP_HANDLER(ZEND_OPCO zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_W TSRMLS_CC); -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } zval_dtor(free_op2.var); if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; } else { @@ -16917,9 +16917,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_ } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_UNSET TSRMLS_CC); zval_dtor(free_op2.var); -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; if (UNEXPECTED(Z_TYPE_P(EX_VAR(opline->result.var)) == IS_STR_OFFSET)) { zend_error_noreturn(E_ERROR, "Cannot unset string offsets"); @@ -17017,9 +17017,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HAND zval_dtor(free_op2.var); //??? } -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; /* We are going to assign the result by reference */ @@ -17068,9 +17068,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HAN zval_dtor(free_op2.var); //??? } -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -17145,9 +17145,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMP_HANDLER(ZEND_OPCO zval_dtor(free_op2.var); //??? } -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -17182,9 +17182,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_ zval_dtor(free_op2.var); //??? } -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; retval_ptr = EX_VAR(opline->result.var); @@ -18986,9 +18986,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HAND } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_W TSRMLS_CC); zval_ptr_dtor_nogc(free_op2.var); -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; @@ -19028,9 +19028,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HAN } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_RW TSRMLS_CC); zval_ptr_dtor_nogc(free_op2.var); -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -19065,9 +19065,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_VAR_HANDLER(ZEND_OPCO zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_W TSRMLS_CC); -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } zval_ptr_dtor_nogc(free_op2.var); if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; } else { @@ -19100,9 +19100,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_ } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_UNSET TSRMLS_CC); zval_ptr_dtor_nogc(free_op2.var); -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; if (UNEXPECTED(Z_TYPE_P(EX_VAR(opline->result.var)) == IS_STR_OFFSET)) { zend_error_noreturn(E_ERROR, "Cannot unset string offsets"); @@ -19200,9 +19200,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HAND zval_ptr_dtor_nogc(free_op2.var); //??? } -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; /* We are going to assign the result by reference */ @@ -19251,9 +19251,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HAN zval_ptr_dtor_nogc(free_op2.var); //??? } -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -19328,9 +19328,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_VAR_HANDLER(ZEND_OPCO zval_ptr_dtor_nogc(free_op2.var); //??? } -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -19365,9 +19365,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_ zval_ptr_dtor_nogc(free_op2.var); //??? } -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; retval_ptr = EX_VAR(opline->result.var); @@ -20907,9 +20907,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_H } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, NULL, IS_UNUSED, BP_VAR_W TSRMLS_CC); -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; @@ -20949,9 +20949,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_ } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, NULL, IS_UNUSED, BP_VAR_RW TSRMLS_CC); -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -20971,9 +20971,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED_HANDLER(ZEND_O zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, NULL, IS_UNUSED, BP_VAR_W TSRMLS_CC); -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; } else { @@ -22348,9 +22348,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDL } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_W TSRMLS_CC); -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; @@ -22390,9 +22390,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HAND } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_RW TSRMLS_CC); -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -22427,9 +22427,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV_HANDLER(ZEND_OPCOD zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_W TSRMLS_CC); -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; } else { @@ -22462,9 +22462,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_H } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_UNSET TSRMLS_CC); -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; if (UNEXPECTED(Z_TYPE_P(EX_VAR(opline->result.var)) == IS_STR_OFFSET)) { zend_error_noreturn(E_ERROR, "Cannot unset string offsets"); @@ -22562,9 +22562,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDL //??? } -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; /* We are going to assign the result by reference */ @@ -22613,9 +22613,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HAND //??? } -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -22690,9 +22690,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV_HANDLER(ZEND_OPCOD //??? } -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -22727,9 +22727,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_H //??? } -//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}; retval_ptr = EX_VAR(opline->result.var); @@ -24268,9 +24268,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE //??? } -//??? if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } /* We are going to assign the result by reference */ if (opline->extended_value & ZEND_FETCH_MAKE_REF) { @@ -24318,9 +24318,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCOD //??? } -//??? if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -24394,9 +24394,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST_HANDLER(ZEND //??? } -//??? if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -24431,9 +24431,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST_HANDLER(ZEND_OP //??? } -//??? if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } retval_ptr = EX_VAR(opline->result.var); if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { @@ -25638,9 +25638,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_H zval_dtor(free_op2.var); //??? } -//??? if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } /* We are going to assign the result by reference */ if (opline->extended_value & ZEND_FETCH_MAKE_REF) { @@ -25688,9 +25688,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_ zval_dtor(free_op2.var); //??? } -//??? if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -25764,9 +25764,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMP_HANDLER(ZEND_O zval_dtor(free_op2.var); //??? } -//??? if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -25801,9 +25801,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCO zval_dtor(free_op2.var); //??? } -//??? if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } retval_ptr = EX_VAR(opline->result.var); if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { @@ -26924,9 +26924,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_H zval_ptr_dtor_nogc(free_op2.var); //??? } -//??? if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } /* We are going to assign the result by reference */ if (opline->extended_value & ZEND_FETCH_MAKE_REF) { @@ -26974,9 +26974,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_ zval_ptr_dtor_nogc(free_op2.var); //??? } -//??? if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -27050,9 +27050,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_VAR_HANDLER(ZEND_O zval_ptr_dtor_nogc(free_op2.var); //??? } -//??? if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -27087,9 +27087,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCO zval_ptr_dtor_nogc(free_op2.var); //??? } -//??? if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } retval_ptr = EX_VAR(opline->result.var); if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { @@ -28610,9 +28610,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HA //??? } -//??? if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } /* We are going to assign the result by reference */ if (opline->extended_value & ZEND_FETCH_MAKE_REF) { @@ -28660,9 +28660,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_H //??? } -//??? if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -28736,9 +28736,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV_HANDLER(ZEND_OP //??? } -//??? if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -28773,9 +28773,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV_HANDLER(ZEND_OPCOD //??? } -//??? if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } retval_ptr = EX_VAR(opline->result.var); if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { @@ -31491,9 +31491,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAN } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_W TSRMLS_CC); -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } /* We are going to assign the result by reference */ if (UNEXPECTED(opline->extended_value != 0)) { @@ -31531,9 +31531,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HA } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_RW TSRMLS_CC); -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -31568,9 +31568,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPC zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_W TSRMLS_CC); -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } } else { @@ -31603,9 +31603,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_UNSET TSRMLS_CC); -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (UNEXPECTED(Z_TYPE_P(EX_VAR(opline->result.var)) == IS_STR_OFFSET)) { zend_error_noreturn(E_ERROR, "Cannot unset string offsets"); @@ -31702,9 +31702,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAN //??? } -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } /* We are going to assign the result by reference */ if (opline->extended_value & ZEND_FETCH_MAKE_REF) { @@ -31752,9 +31752,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HA //??? } -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -31828,9 +31828,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPC //??? } -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -31865,9 +31865,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE //??? } -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } retval_ptr = EX_VAR(opline->result.var); if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { @@ -33559,9 +33559,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDL } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_W TSRMLS_CC); zval_dtor(free_op2.var); -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } /* We are going to assign the result by reference */ if (UNEXPECTED(opline->extended_value != 0)) { @@ -33599,9 +33599,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HAND } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_RW TSRMLS_CC); zval_dtor(free_op2.var); -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -33636,9 +33636,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMP_HANDLER(ZEND_OPCOD zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_W TSRMLS_CC); -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } zval_dtor(free_op2.var); } else { @@ -33671,9 +33671,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_H } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_UNSET TSRMLS_CC); zval_dtor(free_op2.var); -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (UNEXPECTED(Z_TYPE_P(EX_VAR(opline->result.var)) == IS_STR_OFFSET)) { zend_error_noreturn(E_ERROR, "Cannot unset string offsets"); @@ -33770,9 +33770,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDL zval_dtor(free_op2.var); //??? } -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } /* We are going to assign the result by reference */ if (opline->extended_value & ZEND_FETCH_MAKE_REF) { @@ -33820,9 +33820,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HAND zval_dtor(free_op2.var); //??? } -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -33896,9 +33896,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMP_HANDLER(ZEND_OPCOD zval_dtor(free_op2.var); //??? } -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -33933,9 +33933,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_H zval_dtor(free_op2.var); //??? } -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } retval_ptr = EX_VAR(opline->result.var); if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { @@ -35617,9 +35617,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDL } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_W TSRMLS_CC); zval_ptr_dtor_nogc(free_op2.var); -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } /* We are going to assign the result by reference */ if (UNEXPECTED(opline->extended_value != 0)) { @@ -35657,9 +35657,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HAND } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_RW TSRMLS_CC); zval_ptr_dtor_nogc(free_op2.var); -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -35694,9 +35694,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_VAR_HANDLER(ZEND_OPCOD zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_W TSRMLS_CC); -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } zval_ptr_dtor_nogc(free_op2.var); } else { @@ -35729,9 +35729,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_H } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_UNSET TSRMLS_CC); zval_ptr_dtor_nogc(free_op2.var); -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (UNEXPECTED(Z_TYPE_P(EX_VAR(opline->result.var)) == IS_STR_OFFSET)) { zend_error_noreturn(E_ERROR, "Cannot unset string offsets"); @@ -35828,9 +35828,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDL zval_ptr_dtor_nogc(free_op2.var); //??? } -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } /* We are going to assign the result by reference */ if (opline->extended_value & ZEND_FETCH_MAKE_REF) { @@ -35878,9 +35878,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HAND zval_ptr_dtor_nogc(free_op2.var); //??? } -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -35954,9 +35954,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_VAR_HANDLER(ZEND_OPCOD zval_ptr_dtor_nogc(free_op2.var); //??? } -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -35991,9 +35991,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_H zval_ptr_dtor_nogc(free_op2.var); //??? } -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } retval_ptr = EX_VAR(opline->result.var); if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { @@ -37412,9 +37412,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HA } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, NULL, IS_UNUSED, BP_VAR_W TSRMLS_CC); -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } /* We are going to assign the result by reference */ if (UNEXPECTED(opline->extended_value != 0)) { @@ -37452,9 +37452,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_H } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, NULL, IS_UNUSED, BP_VAR_RW TSRMLS_CC); -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -37474,9 +37474,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED_HANDLER(ZEND_OP zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, NULL, IS_UNUSED, BP_VAR_W TSRMLS_CC); -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } } else { @@ -38719,9 +38719,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLE } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_W TSRMLS_CC); -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } /* We are going to assign the result by reference */ if (UNEXPECTED(opline->extended_value != 0)) { @@ -38759,9 +38759,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDL } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_RW TSRMLS_CC); -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -38796,9 +38796,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV_HANDLER(ZEND_OPCODE zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_W TSRMLS_CC); -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } } else { @@ -38831,9 +38831,9 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HA } zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_UNSET TSRMLS_CC); -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } if (UNEXPECTED(Z_TYPE_P(EX_VAR(opline->result.var)) == IS_STR_OFFSET)) { zend_error_noreturn(E_ERROR, "Cannot unset string offsets"); @@ -38930,9 +38930,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLE //??? } -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } /* We are going to assign the result by reference */ if (opline->extended_value & ZEND_FETCH_MAKE_REF) { @@ -38980,9 +38980,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDL //??? } -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -39056,9 +39056,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV_HANDLER(ZEND_OPCODE //??? } -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -39093,9 +39093,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HA //??? } -//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { -//??? EXTRACT_ZVAL_PTR(&EX_T(opline->result.var)); -//??? } + if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) { + EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); + } retval_ptr = EX_VAR(opline->result.var); if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) {