1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

Merge branch 'PHP-8.2' into PHP-8.3

* PHP-8.2:
  Fix GH-16770: Tracing JIT type mismatch when returning UNDEF
This commit is contained in:
Niels Dossche
2024-11-14 22:34:05 +01:00
3 changed files with 46 additions and 0 deletions

4
NEWS
View File

@@ -19,6 +19,10 @@ PHP NEWS
- Hash:
. Fixed GH-16711: Segfault in mhash(). (Girgias)
- Opcache:
. Fixed bug GH-16770 (Tracing JIT type mismatch when returning UNDEF).
(nielsdos, Dmitry)
- OpenSSL:
. Prevent unexpected array entry conversion when reading key. (nielsdos)
. Fix various memory leaks related to openssl exports. (nielsdos)

View File

@@ -5408,6 +5408,9 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
res_type = Z_TYPE_P(RT_CONSTANT(opline, opline->op1));
} else if (op1_type != IS_UNKNOWN) {
res_type = op1_type;
if (res_type == IS_UNDEF) {
res_type = IS_NULL;
}
}
if (op_array->type == ZEND_EVAL_CODE
// TODO: support for top-level code

View File

@@ -0,0 +1,39 @@
--TEST--
GH-16770 (Tracing JIT type mismatch when returning UNDEF)
--INI--
opcache.jit=1254
opcache.jit_hot_loop=1
opcache.jit_buffer_size=32M
--EXTENSIONS--
opcache
--FILE--
<?php
function ret_undef($k) {
return $undefined;
}
for ($i = 0; $i < 10; $i++) {
$output = ret_undef($i);
}
var_dump($output);
?>
--EXPECTF--
Warning: Undefined variable $undefined in %s on line %d
Warning: Undefined variable $undefined in %s on line %d
Warning: Undefined variable $undefined in %s on line %d
Warning: Undefined variable $undefined in %s on line %d
Warning: Undefined variable $undefined in %s on line %d
Warning: Undefined variable $undefined in %s on line %d
Warning: Undefined variable $undefined in %s on line %d
Warning: Undefined variable $undefined in %s on line %d
Warning: Undefined variable $undefined in %s on line %d
Warning: Undefined variable $undefined in %s on line %d
NULL