From 3a794d39f081f73b2204aed8b80163a197ab41c3 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 5 Feb 2018 19:40:06 +0300 Subject: 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). --- Zend/zend_execute.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'Zend/zend_execute.c') 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: -- cgit v1.2.1