value = tmp;
/* Mark extended_value in case both key and value are being used */
- CG(active_op_array)->opcodes[foreach_token->u.opline_num].extended_value |= 2;
+ CG(active_op_array)->opcodes[foreach_token->u.opline_num].extended_value |= ZEND_FE_FETCH_WITH_KEY;
}
if ((key->op_type != IS_UNUSED) && (key->u.EA.type & ZEND_PARSED_REFERENCE_VARIABLE)) {
zend_error(E_COMPILE_ERROR, "Cannot create references to elements of a temporary array expression");
}
/* Mark extended_value for assign-by-reference */
- CG(active_op_array)->opcodes[foreach_token->u.opline_num].extended_value |= 1;
+ CG(active_op_array)->opcodes[foreach_token->u.opline_num].extended_value |= ZEND_FE_FETCH_BYREF;
}
if (key->op_type != IS_UNUSED) {
#define ZEND_FETCH_STANDARD 0
#define ZEND_FETCH_ADD_LOCK 1
+#define ZEND_FE_FETCH_BYREF 1
+#define ZEND_FE_FETCH_WITH_KEY 2
+
#define ZEND_MEMBER_FUNC_CALL 1<<0
#define ZEND_ARG_SEND_BY_REF (1<<0)
HashTable *fe_ht;
zend_object_iterator *iter = NULL;
int key_type;
- /* extended_value & 2 means that the key is also needed */
- zend_bool use_key = opline->extended_value & 2;
+ zend_bool use_key = opline->extended_value & ZEND_FE_FETCH_WITH_KEY;
PZVAL_LOCK(array);
break;
}
- if (opline->extended_value & 1) {
+ if (opline->extended_value & ZEND_FE_FETCH_BYREF) {
SEPARATE_ZVAL_IF_NOT_REF(value);
(*value)->is_ref = 1;
}
if (!use_key) {
- if (opline->extended_value & 1) {
+ if (opline->extended_value & ZEND_FE_FETCH_BYREF) {
EX_T(opline->result.u.var).var.ptr_ptr = value;
(*value)->refcount++;
} else {