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

Merge branch 'PHP-8.5'

* PHP-8.5:
  Fix segfault when preloading constant AST closure
This commit is contained in:
Ilija Tovilo
2026-01-29 13:31:38 +01:00
3 changed files with 31 additions and 0 deletions

View File

@@ -1247,6 +1247,12 @@ static zend_result ZEND_FASTCALL zend_ast_evaluate_inner(
}
case ZEND_AST_OP_ARRAY:
{
// Preloading will attempt to resolve constants but objects can't be stored in shm
// Aborting here to store the const AST instead
if (CG(in_compilation)) {
return FAILURE;
}
zend_function *func = (zend_function *)zend_ast_get_op_array(ast)->op_array;
zend_create_closure(result, func, scope, scope, NULL);

View File

@@ -0,0 +1,7 @@
<?php
class Foo {
public const C = static function() {
echo "Hello world\n";
};
}

View File

@@ -0,0 +1,18 @@
--TEST--
GH-21059: Segfault when preloading constant AST closure
--INI--
opcache.enable=1
opcache.enable_cli=1
opcache.preload={PWD}/preload_gh21059.inc
--EXTENSIONS--
opcache
--SKIPIF--
<?php
if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
?>
--FILE--
<?php
(Foo::C)();
?>
--EXPECT--
Hello world