From a29b64fc1029b4121e3e9ff20901c35ad600b4da Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Wed, 4 Mar 2015 14:48:41 +0800 Subject: Fixed bug #69159 (Opcache causes problem when passing a variable variable to a function) --- ext/opcache/Optimizer/optimize_func_calls.c | 4 ++-- ext/opcache/tests/bug69159.phpt | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 ext/opcache/tests/bug69159.phpt (limited to 'ext') diff --git a/ext/opcache/Optimizer/optimize_func_calls.c b/ext/opcache/Optimizer/optimize_func_calls.c index 14f8255653..886021ce97 100644 --- a/ext/opcache/Optimizer/optimize_func_calls.c +++ b/ext/opcache/Optimizer/optimize_func_calls.c @@ -82,10 +82,10 @@ static void optimize_func_calls(zend_op_array *op_array, zend_persistent_script case ZEND_FETCH_DIM_FUNC_ARG: if (call_stack[call - 1].func) { if (ARG_SHOULD_BE_SENT_BY_REF(call_stack[call - 1].func, (opline->extended_value & ZEND_FETCH_ARG_MASK))) { - opline->extended_value = 0; + opline->extended_value &= ZEND_FETCH_TYPE_MASK; opline->opcode -= 9; } else { - opline->extended_value = 0; + opline->extended_value &= ZEND_FETCH_TYPE_MASK; opline->opcode -= 12; } } diff --git a/ext/opcache/tests/bug69159.phpt b/ext/opcache/tests/bug69159.phpt new file mode 100644 index 0000000000..d8b953a1aa --- /dev/null +++ b/ext/opcache/tests/bug69159.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug #69159 (Opcache causes problem when passing a variable variable to a function) +--INI-- +opcache.enable=1 +opcache.optimization_level=-1 +--SKIPIF-- + +--FILE-- + +--EXPECT-- +string(4) "okey" -- cgit v1.2.1