summaryrefslogtreecommitdiff
path: root/Zend/zend_execute.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2018-02-05 19:40:06 +0300
committerDmitry Stogov <dmitry@zend.com>2018-02-05 19:40:06 +0300
commit3a794d39f081f73b2204aed8b80163a197ab41c3 (patch)
tree90af4978f502d85b1a1ac1e1e72ebeaf9e65d6bc /Zend/zend_execute.c
parent7416562ab0c1062722c43c6b55d38e1a79f217cb (diff)
downloadphp-git-3a794d39f081f73b2204aed8b80163a197ab41c3.tar.gz
Avoid repeatable ARG_SHOULD_BE_SENT_BY_REF() checks in FETCH_*FUNC_ARG and following SEND_VAR_EX. Perform the check once in a new CHECK_FUNC_ARG opcode and reuse in the following FETCH_*FUNC_ARG and SEND_FUNC_ARG (SEND_VAR_EX replacement).
Diffstat (limited to 'Zend/zend_execute.c')
-rw-r--r--Zend/zend_execute.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 7714ecf852..9e4f0baf0a 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -1228,6 +1228,7 @@ static zend_never_inline ZEND_COLD void zend_wrong_string_offset(EXECUTE_DATA_D)
break;
case ZEND_SEND_REF:
case ZEND_SEND_VAR_EX:
+ case ZEND_SEND_FUNC_ARG:
msg = "Only variables can be passed by reference";
break;
case ZEND_FE_RESET_RW:
@@ -2491,6 +2492,7 @@ static void cleanup_unfinished_calls(zend_execute_data *execute_data, uint32_t o
case ZEND_SEND_VAL_EX:
case ZEND_SEND_VAR:
case ZEND_SEND_VAR_EX:
+ case ZEND_SEND_FUNC_ARG:
case ZEND_SEND_REF:
case ZEND_SEND_VAR_NO_REF:
case ZEND_SEND_VAR_NO_REF_EX: