]> granicus.if.org Git - php/commit
Fix constant evaluation of && and ||
authorNikita Popov <nikita.ppv@gmail.com>
Fri, 6 Dec 2019 10:07:57 +0000 (11:07 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Fri, 6 Dec 2019 10:07:57 +0000 (11:07 +0100)
commit249e49092d0e7f4b38a83e59947797d4e255991f
treefb8717b9ca1ed2b4acdfdc60ceabb80d44a6786f
parentfac43d6515adb932083edeacd40f87d6b8393d66
Fix constant evaluation of && and ||

The "return" in the for loop should have been a break on the switch,
otherwise the result is just ignored... but because it prevents
evaluation of the other operand, it also violates the invariant that
everything has been constant evaluated, resulting in an assertion
failure.

The for loop isn't correct in any case though, because it's not legal
to determine the result based on just the second operand, as the
first one may have a side-effect that cannot be optimized away.
Zend/tests/const_eval_and.phpt [new file with mode: 0644]
Zend/zend_compile.c