mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Merge branch 'PHP-8.4'
* PHP-8.4: Fix GH-17428: Assertion failure ext/opcache/jit/zend_jit_ir.c:8940
This commit is contained in:
commit
650e59a1c2
2 changed files with 38 additions and 3 deletions
|
@ -2760,8 +2760,8 @@ static int zend_jit(const zend_op_array *op_array, zend_ssa *ssa, const zend_op
|
|||
/* THROW and EXIT may be used in the middle of BB */
|
||||
/* don't generate code for the rest of BB */
|
||||
|
||||
/* Skip current opline for call_level computation
|
||||
* Don't include last opline because end of loop already checks call level of last opline */
|
||||
/* Skip current opline for call_level computation because it does not influence call_level.
|
||||
* Don't include last opline because end of loop already checks call level of last opline. */
|
||||
i++;
|
||||
for (; i < end; i++) {
|
||||
opline = op_array->opcodes + i;
|
||||
|
@ -2771,7 +2771,7 @@ static int zend_jit(const zend_op_array *op_array, zend_ssa *ssa, const zend_op
|
|||
call_level--;
|
||||
}
|
||||
}
|
||||
opline = op_array->opcodes + i;
|
||||
opline = op_array->opcodes + end;
|
||||
break;
|
||||
/* stackless execution */
|
||||
case ZEND_INCLUDE_OR_EVAL:
|
||||
|
|
35
ext/opcache/tests/jit/gh17428.phpt
Normal file
35
ext/opcache/tests/jit/gh17428.phpt
Normal file
|
@ -0,0 +1,35 @@
|
|||
--TEST--
|
||||
GH-17428 (Assertion failure ext/opcache/jit/zend_jit_ir.c:8940)
|
||||
--EXTENSIONS--
|
||||
opcache
|
||||
--INI--
|
||||
opcache.jit=1205
|
||||
--FILE--
|
||||
<?php
|
||||
new EmptyIterator();
|
||||
srand(1000);
|
||||
error_reporting(E_ALL);
|
||||
testConversion('', '');
|
||||
testConversion('', '');
|
||||
testConversion('', '');
|
||||
testConversion('', '');
|
||||
testConversion('', '');
|
||||
function testRoundTrip($data) {
|
||||
}
|
||||
for ($iterations = 0; $iterations < 100; $iterations++) {
|
||||
$strlen = rand(1, 100);
|
||||
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
||||
$randstring = '';
|
||||
for ($i = 0; $i < $strlen; $i++) {
|
||||
$randstring .= $characters[rand(0, strlen($characters) - 1)];
|
||||
}
|
||||
die($randstring);
|
||||
}
|
||||
echo "Done!\n";
|
||||
throw new Hello(new stdClass);
|
||||
?>
|
||||
--EXPECTF--
|
||||
Fatal error: Uncaught Error: Call to undefined function testConversion() in %s:%d
|
||||
Stack trace:
|
||||
#0 {main}
|
||||
thrown in %s on line %d
|
Loading…
Add table
Add a link
Reference in a new issue