From: Dmitry Stogov Date: Wed, 13 Jul 2016 17:04:47 +0000 (+0300) Subject: Removed wrong warning X-Git-Tag: php-7.1.0beta1~74 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=02dca0cf160e239a5797176bd0eacf600c6667bf;p=php Removed wrong warning --- diff --git a/Zend/tests/bug72215_3.phpt b/Zend/tests/bug72215_3.phpt new file mode 100644 index 0000000000..38c017b61c --- /dev/null +++ b/Zend/tests/bug72215_3.phpt @@ -0,0 +1,16 @@ +--TEST-- +Bug #72215.3 (Wrong return value if var modified in finally) +--FILE-- + +--EXPECT-- +NULL + diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index f93e89f39f..d8e033fec0 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -8103,13 +8103,11 @@ ZEND_VM_HANDLER(51, ZEND_MAKE_REF, VAR|CV, UNUSED) if (OP1_TYPE == IS_CV) { if (UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) { - SAVE_OPLINE(); - GET_OP1_UNDEF_CV(op1, BP_VAR_R); ZVAL_NULL(EX_VAR(opline->result.var)); - ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); + } else { + ZVAL_MAKE_REF(op1); + ZVAL_COPY(EX_VAR(opline->result.var), op1); } - ZVAL_MAKE_REF(op1); - ZVAL_COPY(EX_VAR(opline->result.var), op1); } else if (EXPECTED(Z_TYPE_P(op1) == IS_INDIRECT)) { op1 = Z_INDIRECT_P(op1); if (EXPECTED(!Z_ISREF_P(op1))) { diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 8574b2436c..703049942b 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -21820,13 +21820,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MAKE_REF_SPEC_VAR_UNUSED_HANDL if (IS_VAR == IS_CV) { if (UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) { - SAVE_OPLINE(); - GET_OP1_UNDEF_CV(op1, BP_VAR_R); ZVAL_NULL(EX_VAR(opline->result.var)); - ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); + } else { + ZVAL_MAKE_REF(op1); + ZVAL_COPY(EX_VAR(opline->result.var), op1); } - ZVAL_MAKE_REF(op1); - ZVAL_COPY(EX_VAR(opline->result.var), op1); } else if (EXPECTED(Z_TYPE_P(op1) == IS_INDIRECT)) { op1 = Z_INDIRECT_P(op1); if (EXPECTED(!Z_ISREF_P(op1))) { @@ -42817,13 +42815,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MAKE_REF_SPEC_CV_UNUSED_HANDLE if (IS_CV == IS_CV) { if (UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) { - SAVE_OPLINE(); - GET_OP1_UNDEF_CV(op1, BP_VAR_R); ZVAL_NULL(EX_VAR(opline->result.var)); - ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); + } else { + ZVAL_MAKE_REF(op1); + ZVAL_COPY(EX_VAR(opline->result.var), op1); } - ZVAL_MAKE_REF(op1); - ZVAL_COPY(EX_VAR(opline->result.var), op1); } else if (EXPECTED(Z_TYPE_P(op1) == IS_INDIRECT)) { op1 = Z_INDIRECT_P(op1); if (EXPECTED(!Z_ISREF_P(op1))) {