zend_bool is_empty;
if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
- FREE_OP1_IF_VAR();
+ FREE_OP1();
if (!EG(exception)) {
zend_throw_exception_ex(NULL, 0, "Object of type %s did not create an Iterator", ce->name->val);
}
if (iter->funcs->rewind) {
iter->funcs->rewind(iter);
if (UNEXPECTED(EG(exception) != NULL)) {
- FREE_OP1_IF_VAR();
OBJ_RELEASE(&iter->std);
+ FREE_OP1();
HANDLE_EXCEPTION();
}
}
is_empty = iter->funcs->valid(iter) != SUCCESS;
if (UNEXPECTED(EG(exception) != NULL)) {
- FREE_OP1_IF_VAR();
OBJ_RELEASE(&iter->std);
+ FREE_OP1();
HANDLE_EXCEPTION();
}
iter->index = -1; /* will be set to 0 before using next handler */
ZVAL_OBJ(EX_VAR(opline->result.var), &iter->std);
- FREE_OP1_IF_VAR();
+ FREE_OP1();
if (is_empty) {
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
} else {
ZEND_VM_NEXT_OPCODE();
}
} else if ((fe_ht = HASH_OF(array_ptr)) != NULL) {
- if (OP1_TYPE != IS_TMP_VAR) {
- if (Z_REFCOUNTED_P(array_ptr)) {
- Z_ADDREF_P(array_ptr);
- }
+ zval *result = EX_VAR(opline->result.var);
+
+ ZVAL_COPY_VALUE(result, array_ptr);
+ if (OP1_TYPE != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
+ Z_ADDREF_P(array_ptr);
}
- ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ptr);
- Z_FE_POS_P(EX_VAR(opline->result.var)) = 0;
+ Z_FE_POS_P(result) = 0;
FREE_OP1_IF_VAR();
CHECK_EXCEPTION();
zend_bool is_empty;
if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
- FREE_OP1_VAR_PTR();
+ if (OP1_TYPE == IS_VAR) {
+ FREE_OP1_VAR_PTR();
+ } else {
+ FREE_OP1();
+ }
if (!EG(exception)) {
zend_throw_exception_ex(NULL, 0, "Object of type %s did not create an Iterator", ce->name->val);
}
if (iter->funcs->rewind) {
iter->funcs->rewind(iter);
if (UNEXPECTED(EG(exception) != NULL)) {
- FREE_OP1_VAR_PTR();
OBJ_RELEASE(&iter->std);
+ if (OP1_TYPE == IS_VAR) {
+ FREE_OP1_VAR_PTR();
+ } else {
+ FREE_OP1();
+ }
HANDLE_EXCEPTION();
}
}
is_empty = iter->funcs->valid(iter) != SUCCESS;
if (UNEXPECTED(EG(exception) != NULL)) {
- FREE_OP1_VAR_PTR();
OBJ_RELEASE(&iter->std);
+ if (OP1_TYPE == IS_VAR) {
+ FREE_OP1_VAR_PTR();
+ } else {
+ FREE_OP1();
+ }
HANDLE_EXCEPTION();
}
iter->index = -1; /* will be set to 0 before using next handler */
Z_FE_POS_P(EX_VAR(opline->result.var)) = INVALID_IDX;
ZVAL_PTR(EX_VAR((opline+2)->op1.var), NULL);
- FREE_OP1_VAR_PTR();
+ if (OP1_TYPE == IS_VAR) {
+ FREE_OP1_VAR_PTR();
+ } else {
+ FREE_OP1();
+ }
if (is_empty) {
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
} else {
} else {
zend_error(E_WARNING, "Invalid argument supplied for foreach()");
ZVAL_UNDEF(EX_VAR(opline->result.var));
- FREE_OP1_VAR_PTR();
+ if (OP1_TYPE == IS_VAR) {
+ FREE_OP1_VAR_PTR();
+ } else {
+ FREE_OP1();
+ }
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
}
/* failure in get_current_data */
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
- ZVAL_MAKE_REF(value);
- Z_ADDREF_P(value);
- ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(value));
if (opline->extended_value) {
if (iter->funcs->get_current_key) {
iter->funcs->get_current_key(iter, EX_VAR((opline+1)->result.var));
ZVAL_LONG(EX_VAR((opline+1)->result.var), iter->index);
}
}
+ ZVAL_MAKE_REF(value);
+ Z_ADDREF_P(value);
+ ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(value));
ZEND_VM_INC_OPCODE();
ZEND_VM_NEXT_OPCODE();
}
if (iter->funcs->rewind) {
iter->funcs->rewind(iter);
if (UNEXPECTED(EG(exception) != NULL)) {
-
OBJ_RELEASE(&iter->std);
+
HANDLE_EXCEPTION();
}
}
is_empty = iter->funcs->valid(iter) != SUCCESS;
if (UNEXPECTED(EG(exception) != NULL)) {
-
OBJ_RELEASE(&iter->std);
+
HANDLE_EXCEPTION();
}
iter->index = -1; /* will be set to 0 before using next handler */
ZEND_VM_NEXT_OPCODE();
}
} else if ((fe_ht = HASH_OF(array_ptr)) != NULL) {
- if (IS_CONST != IS_TMP_VAR) {
- if (Z_REFCOUNTED_P(array_ptr)) {
- Z_ADDREF_P(array_ptr);
- }
+ zval *result = EX_VAR(opline->result.var);
+
+ ZVAL_COPY_VALUE(result, array_ptr);
+ if (IS_CONST != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
+ Z_ADDREF_P(array_ptr);
}
- ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ptr);
- Z_FE_POS_P(EX_VAR(opline->result.var)) = 0;
+ Z_FE_POS_P(result) = 0;
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
zend_bool is_empty;
if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
+ if (IS_CONST == IS_VAR) {
+ } else {
+
+ }
if (!EG(exception)) {
zend_throw_exception_ex(NULL, 0, "Object of type %s did not create an Iterator", ce->name->val);
}
if (iter->funcs->rewind) {
iter->funcs->rewind(iter);
if (UNEXPECTED(EG(exception) != NULL)) {
-
OBJ_RELEASE(&iter->std);
+ if (IS_CONST == IS_VAR) {
+
+ } else {
+
+ }
HANDLE_EXCEPTION();
}
}
is_empty = iter->funcs->valid(iter) != SUCCESS;
if (UNEXPECTED(EG(exception) != NULL)) {
-
OBJ_RELEASE(&iter->std);
+ if (IS_CONST == IS_VAR) {
+
+ } else {
+
+ }
HANDLE_EXCEPTION();
}
iter->index = -1; /* will be set to 0 before using next handler */
Z_FE_POS_P(EX_VAR(opline->result.var)) = INVALID_IDX;
ZVAL_PTR(EX_VAR((opline+2)->op1.var), NULL);
+ if (IS_CONST == IS_VAR) {
+
+ } else {
+
+ }
if (is_empty) {
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
} else {
} else {
zend_error(E_WARNING, "Invalid argument supplied for foreach()");
ZVAL_UNDEF(EX_VAR(opline->result.var));
+ if (IS_CONST == IS_VAR) {
+
+ } else {
+ }
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
}
zend_bool is_empty;
if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
-
+ zval_ptr_dtor_nogc(free_op1);
if (!EG(exception)) {
zend_throw_exception_ex(NULL, 0, "Object of type %s did not create an Iterator", ce->name->val);
}
if (iter->funcs->rewind) {
iter->funcs->rewind(iter);
if (UNEXPECTED(EG(exception) != NULL)) {
-
OBJ_RELEASE(&iter->std);
+ zval_ptr_dtor_nogc(free_op1);
HANDLE_EXCEPTION();
}
}
is_empty = iter->funcs->valid(iter) != SUCCESS;
if (UNEXPECTED(EG(exception) != NULL)) {
-
OBJ_RELEASE(&iter->std);
+ zval_ptr_dtor_nogc(free_op1);
HANDLE_EXCEPTION();
}
iter->index = -1; /* will be set to 0 before using next handler */
ZVAL_OBJ(EX_VAR(opline->result.var), &iter->std);
+ zval_ptr_dtor_nogc(free_op1);
if (is_empty) {
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
} else {
ZEND_VM_NEXT_OPCODE();
}
} else if ((fe_ht = HASH_OF(array_ptr)) != NULL) {
- if (IS_TMP_VAR != IS_TMP_VAR) {
- if (Z_REFCOUNTED_P(array_ptr)) {
- Z_ADDREF_P(array_ptr);
- }
+ zval *result = EX_VAR(opline->result.var);
+
+ ZVAL_COPY_VALUE(result, array_ptr);
+ if (IS_TMP_VAR != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
+ Z_ADDREF_P(array_ptr);
}
- ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ptr);
- Z_FE_POS_P(EX_VAR(opline->result.var)) = 0;
+ Z_FE_POS_P(result) = 0;
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
zend_bool is_empty;
if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
+ if (IS_TMP_VAR == IS_VAR) {
+ } else {
+ zval_ptr_dtor_nogc(free_op1);
+ }
if (!EG(exception)) {
zend_throw_exception_ex(NULL, 0, "Object of type %s did not create an Iterator", ce->name->val);
}
if (iter->funcs->rewind) {
iter->funcs->rewind(iter);
if (UNEXPECTED(EG(exception) != NULL)) {
-
OBJ_RELEASE(&iter->std);
+ if (IS_TMP_VAR == IS_VAR) {
+
+ } else {
+ zval_ptr_dtor_nogc(free_op1);
+ }
HANDLE_EXCEPTION();
}
}
is_empty = iter->funcs->valid(iter) != SUCCESS;
if (UNEXPECTED(EG(exception) != NULL)) {
-
OBJ_RELEASE(&iter->std);
+ if (IS_TMP_VAR == IS_VAR) {
+
+ } else {
+ zval_ptr_dtor_nogc(free_op1);
+ }
HANDLE_EXCEPTION();
}
iter->index = -1; /* will be set to 0 before using next handler */
Z_FE_POS_P(EX_VAR(opline->result.var)) = INVALID_IDX;
ZVAL_PTR(EX_VAR((opline+2)->op1.var), NULL);
+ if (IS_TMP_VAR == IS_VAR) {
+
+ } else {
+ zval_ptr_dtor_nogc(free_op1);
+ }
if (is_empty) {
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
} else {
} else {
zend_error(E_WARNING, "Invalid argument supplied for foreach()");
ZVAL_UNDEF(EX_VAR(opline->result.var));
+ if (IS_TMP_VAR == IS_VAR) {
+ } else {
+ zval_ptr_dtor_nogc(free_op1);
+ }
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
}
if (iter->funcs->rewind) {
iter->funcs->rewind(iter);
if (UNEXPECTED(EG(exception) != NULL)) {
- zval_ptr_dtor_nogc(free_op1);
OBJ_RELEASE(&iter->std);
+ zval_ptr_dtor_nogc(free_op1);
HANDLE_EXCEPTION();
}
}
is_empty = iter->funcs->valid(iter) != SUCCESS;
if (UNEXPECTED(EG(exception) != NULL)) {
- zval_ptr_dtor_nogc(free_op1);
OBJ_RELEASE(&iter->std);
+ zval_ptr_dtor_nogc(free_op1);
HANDLE_EXCEPTION();
}
iter->index = -1; /* will be set to 0 before using next handler */
ZEND_VM_NEXT_OPCODE();
}
} else if ((fe_ht = HASH_OF(array_ptr)) != NULL) {
- if (IS_VAR != IS_TMP_VAR) {
- if (Z_REFCOUNTED_P(array_ptr)) {
- Z_ADDREF_P(array_ptr);
- }
+ zval *result = EX_VAR(opline->result.var);
+
+ ZVAL_COPY_VALUE(result, array_ptr);
+ if (IS_VAR != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
+ Z_ADDREF_P(array_ptr);
}
- ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ptr);
- Z_FE_POS_P(EX_VAR(opline->result.var)) = 0;
+ Z_FE_POS_P(result) = 0;
zval_ptr_dtor_nogc(free_op1);
CHECK_EXCEPTION();
zend_bool is_empty;
if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
- if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
+ if (IS_VAR == IS_VAR) {
+ if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
+ } else {
+ zval_ptr_dtor_nogc(free_op1);
+ }
if (!EG(exception)) {
zend_throw_exception_ex(NULL, 0, "Object of type %s did not create an Iterator", ce->name->val);
}
if (iter->funcs->rewind) {
iter->funcs->rewind(iter);
if (UNEXPECTED(EG(exception) != NULL)) {
- if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
OBJ_RELEASE(&iter->std);
+ if (IS_VAR == IS_VAR) {
+ if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
+ } else {
+ zval_ptr_dtor_nogc(free_op1);
+ }
HANDLE_EXCEPTION();
}
}
is_empty = iter->funcs->valid(iter) != SUCCESS;
if (UNEXPECTED(EG(exception) != NULL)) {
- if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
OBJ_RELEASE(&iter->std);
+ if (IS_VAR == IS_VAR) {
+ if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
+ } else {
+ zval_ptr_dtor_nogc(free_op1);
+ }
HANDLE_EXCEPTION();
}
iter->index = -1; /* will be set to 0 before using next handler */
Z_FE_POS_P(EX_VAR(opline->result.var)) = INVALID_IDX;
ZVAL_PTR(EX_VAR((opline+2)->op1.var), NULL);
- if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
+ if (IS_VAR == IS_VAR) {
+ if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
+ } else {
+ zval_ptr_dtor_nogc(free_op1);
+ }
if (is_empty) {
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
} else {
} else {
zend_error(E_WARNING, "Invalid argument supplied for foreach()");
ZVAL_UNDEF(EX_VAR(opline->result.var));
- if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
+ if (IS_VAR == IS_VAR) {
+ if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
+ } else {
+ zval_ptr_dtor_nogc(free_op1);
+ }
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
}
/* failure in get_current_data */
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
- ZVAL_MAKE_REF(value);
- Z_ADDREF_P(value);
- ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(value));
if (opline->extended_value) {
if (iter->funcs->get_current_key) {
iter->funcs->get_current_key(iter, EX_VAR((opline+1)->result.var));
ZVAL_LONG(EX_VAR((opline+1)->result.var), iter->index);
}
}
+ ZVAL_MAKE_REF(value);
+ Z_ADDREF_P(value);
+ ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(value));
ZEND_VM_INC_OPCODE();
ZEND_VM_NEXT_OPCODE();
}
if (iter->funcs->rewind) {
iter->funcs->rewind(iter);
if (UNEXPECTED(EG(exception) != NULL)) {
-
OBJ_RELEASE(&iter->std);
+
HANDLE_EXCEPTION();
}
}
is_empty = iter->funcs->valid(iter) != SUCCESS;
if (UNEXPECTED(EG(exception) != NULL)) {
-
OBJ_RELEASE(&iter->std);
+
HANDLE_EXCEPTION();
}
iter->index = -1; /* will be set to 0 before using next handler */
ZEND_VM_NEXT_OPCODE();
}
} else if ((fe_ht = HASH_OF(array_ptr)) != NULL) {
- if (IS_CV != IS_TMP_VAR) {
- if (Z_REFCOUNTED_P(array_ptr)) {
- Z_ADDREF_P(array_ptr);
- }
+ zval *result = EX_VAR(opline->result.var);
+
+ ZVAL_COPY_VALUE(result, array_ptr);
+ if (IS_CV != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
+ Z_ADDREF_P(array_ptr);
}
- ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ptr);
- Z_FE_POS_P(EX_VAR(opline->result.var)) = 0;
+ Z_FE_POS_P(result) = 0;
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
zend_bool is_empty;
if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
+ if (IS_CV == IS_VAR) {
+
+ } else {
+ }
if (!EG(exception)) {
zend_throw_exception_ex(NULL, 0, "Object of type %s did not create an Iterator", ce->name->val);
}
if (iter->funcs->rewind) {
iter->funcs->rewind(iter);
if (UNEXPECTED(EG(exception) != NULL)) {
-
OBJ_RELEASE(&iter->std);
+ if (IS_CV == IS_VAR) {
+
+ } else {
+
+ }
HANDLE_EXCEPTION();
}
}
is_empty = iter->funcs->valid(iter) != SUCCESS;
if (UNEXPECTED(EG(exception) != NULL)) {
-
OBJ_RELEASE(&iter->std);
+ if (IS_CV == IS_VAR) {
+
+ } else {
+
+ }
HANDLE_EXCEPTION();
}
iter->index = -1; /* will be set to 0 before using next handler */
Z_FE_POS_P(EX_VAR(opline->result.var)) = INVALID_IDX;
ZVAL_PTR(EX_VAR((opline+2)->op1.var), NULL);
+ if (IS_CV == IS_VAR) {
+
+ } else {
+
+ }
if (is_empty) {
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
} else {
} else {
zend_error(E_WARNING, "Invalid argument supplied for foreach()");
ZVAL_UNDEF(EX_VAR(opline->result.var));
+ if (IS_CV == IS_VAR) {
+
+ } else {
+ }
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
}