If the last instruction in a block is a NOP, then `new_opline`
here won't be a copy of `opline`, it will be a copy of the last
non-NOP opline. Avoid performing a spurious update by explicitly
checking for NOP.
microseconds/fractions). (Andrew Nester)
. Fixed bug #74433 (wrong reflection for Normalizer methods). (villfa)
+- Opcache:
+ . Fixed bug #74431 (foreach infinite loop). (Nikita)
+
- OpenSSL:
. Fixed bug #74341 (openssl_x509_parse fails to parse ASN.1 UTCTime without
seconds). (Moritz Fain)
zend_op *opline;
zend_op *new_opline;
- opline = op_array->opcodes + end - 1;
b->len = target - b->start;
+ opline = op_array->opcodes + end - 1;
+ if (opline->opcode == ZEND_NOP) {
+ continue;
+ }
+
new_opline = op_array->opcodes + target - 1;
switch (new_opline->opcode) {
case ZEND_JMP: