Merge branch 'PHP-8.4'

This commit is contained in:
David Carlier committed 2025-06-07 14:29:13 +01:00
commit b72dccb3e3
2 files changed
+27 -3

No files matched your search

+3 -3
View File
@@ -376,6 +376,9 @@ static int php_sqlite_collation_callback(void *context, int string1_len, const v
zend_call_known_fcc(&collation->callback, &retval, /* argc */ 2, zargs, /* named_params */ NULL);
zval_ptr_dtor(&zargs[0]);
zval_ptr_dtor(&zargs[1]);
if (!Z_ISUNDEF(retval)) {
if (Z_TYPE(retval) != IS_LONG) {
zend_string *func_name = get_active_function_or_method_name();
@@ -392,9 +395,6 @@ static int php_sqlite_collation_callback(void *context, int string1_len, const v
}
}
zval_ptr_dtor(&zargs[0]);
zval_ptr_dtor(&zargs[1]);
return ret;
}
@@ -0,0 +1,24 @@
--TEST--
Pdo\Sqlite::createCollation() memory leaks on wrong callback return type
--EXTENSIONS--
pdo_sqlite
--FILE--
<?php
declare(strict_types=1);
$db = new Pdo\Sqlite('sqlite::memory:');
$db->exec("CREATE TABLE test (c string)");
$db->exec("INSERT INTO test VALUES('youwontseeme')");
$db->exec("INSERT INTO test VALUES('neither')");
$db->createCollation('NAT', function($a, $b): string { return $a . $b; });
try {
$db->query("SELECT c FROM test ORDER BY c COLLATE NAT");
} catch (\TypeError $e) {
echo $e->getMessage(), PHP_EOL;
}
?>
--EXPECT--
PDO::query(): Return value of the callback must be of type int, string returned