summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXinchen Hui <laruence@gmail.com>2018-08-17 12:22:46 +0800
committerXinchen Hui <laruence@gmail.com>2018-08-17 12:22:46 +0800
commit4ab25235e5b478e60d9951750fed9475a0e2b475 (patch)
tree73f4ec9729b935c36465899afa292177d4db92ba
parentdc790942178cb9fb89c15ed15a5244cf8161620d (diff)
downloadphp-git-4ab25235e5b478e60d9951750fed9475a0e2b475.tar.gz
Added a note
-rw-r--r--Zend/zend_vm_def.h1
-rw-r--r--Zend/zend_vm_execute.h3
2 files changed, 4 insertions, 0 deletions
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index 14dc9e6763..74cf5806eb 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -6537,6 +6537,7 @@ ZEND_VM_COLD_CONST_HANDLER(169, ZEND_COALESCE, CONST|TMPVAR|CV, JMP_ADDR)
SAVE_OPLINE();
value = GET_OP1_ZVAL_PTR(BP_VAR_IS);
+ /* FETCH_OBJ_IS may return IS_REFERENCE in TMP_VAR */
if ((OP1_TYPE & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
if (OP1_TYPE & IS_VAR) {
ref = value;
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index 523e0985f9..8a3dc22a9e 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -3545,6 +3545,7 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COALESCE_SPEC_CON
SAVE_OPLINE();
value = RT_CONSTANT(opline, opline->op1);
+ /* FETCH_OBJ_IS may return IS_REFERENCE in TMP_VAR */
if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
if (IS_CONST & IS_VAR) {
ref = value;
@@ -12791,6 +12792,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COALESCE_SPEC_TMPVAR_HANDLER(Z
SAVE_OPLINE();
value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+ /* FETCH_OBJ_IS may return IS_REFERENCE in TMP_VAR */
if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
if ((IS_TMP_VAR|IS_VAR) & IS_VAR) {
ref = value;
@@ -37925,6 +37927,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COALESCE_SPEC_CV_HANDLER(ZEND_
SAVE_OPLINE();
value = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
+ /* FETCH_OBJ_IS may return IS_REFERENCE in TMP_VAR */
if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
if (IS_CV & IS_VAR) {
ref = value;