summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_compile.c4
-rw-r--r--Zend/zend_compile.h3
-rw-r--r--Zend/zend_execute.c7
3 files changed, 8 insertions, 6 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 37ec35fa16..facac97ae9 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -3353,7 +3353,7 @@ void zend_do_foreach_cont(znode *value, znode *key, znode *as_token, znode *fore
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)) {
@@ -3366,7 +3366,7 @@ void zend_do_foreach_cont(znode *value, znode *key, znode *as_token, znode *fore
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) {
diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h
index 937b17043f..e10d2bf775 100644
--- a/Zend/zend_compile.h
+++ b/Zend/zend_compile.h
@@ -794,6 +794,9 @@ int zendlex(znode *zendlval TSRMLS_DC);
#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)
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 79ea269a2f..f7c20f27a4 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -3779,8 +3779,7 @@ int zend_fe_fetch_handler(ZEND_OPCODE_HANDLER_ARGS)
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);
@@ -3858,13 +3857,13 @@ int zend_fe_fetch_handler(ZEND_OPCODE_HANDLER_ARGS)
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 {