com php-src: Removed wrong warning: Zend/tests/bug7221 5_3.phpt Zend/zend_vm_def.h Zend/zend_vm_ execute.h

From: Date: Wed, 13 Jul 2016 17:04:47 +0000
Subject: com php-src: Removed wrong warning: Zend/tests/bug7221 5_3.phpt Zend/zend_vm_def.h Zend/zend_vm_ execute.h
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-92997@lists.php.net to get a copy of this message
Commit: 02dca0cf160e239a5797176bd0eacf600c6667bf Author: Dmitry Stogov <dmitry@zend.com> Wed, 13 Jul 2016 20:04:47 +0300 Parents: afd3e39d6697e36d3b92cee5da911e4ea0de3901 Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=02dca0cf160e239a5797176bd0eacf600c6667bf Log: Removed wrong warning Changed paths: A Zend/tests/bug72215_3.phpt M Zend/zend_vm_def.h M Zend/zend_vm_execute.h Diff: diff --git a/Zend/tests/bug72215_3.phpt b/Zend/tests/bug72215_3.phpt new file mode 100644 index 0000000..38c017b --- /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-- +<?php +function &test() { + try { + return $a; + } finally { + $a = 2; + } +} +var_dump(test()); +?> +--EXPECT-- +NULL + diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index f93e89f..d8e033f 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 8574b24..7030499 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))) {

« previous php.cvs (#92997) next »