This commit is contained in:
Nikita Popov 2020-10-05 15:23:31 +02:00
parent 4982964224
commit 6ea870f5fb
3 changed files with 25 additions and 0 deletions

4
NEWS
View file

@ -6,6 +6,10 @@ PHP NEWS
. Fixed bug #80121 (Null pointer deref if CurlHandle directly instantiated).
(Nikita)
- Opcache:
. Fixed bug #80184 (Complex expression in while / if statements resolves to
false incorrectly). (Nikita)
- SPL:
. Fixed bug #65387 (Circular references in SPL iterators are not garbage
collected). (Nikita)

20
Zend/tests/bug80184.phpt Normal file
View file

@ -0,0 +1,20 @@
--TEST--
Bug #80184: Complex expression in while / if statements resolves to false incorrectly
--FILE--
<?php
$callbacks = [
function () { echo "First item!\n"; },
function () { echo "Second item!\n"; },
function () { echo "Third item!\n"; },
function () { echo "Fourth item!\n"; },
];
while ($callback = array_shift($callbacks) and ($callback() || true));
?>
--EXPECT--
First item!
Second item!
Third item!
Fourth item!

View file

@ -1371,6 +1371,7 @@ static void zend_jmp_optimization(zend_basic_block *block, zend_op_array *op_arr
MAKE_NOP(last_op);
block->len--;
}
block->successors[0] = follow_block - cfg->blocks;
block->successors_count = 1;
++(*opt_count);
break;