Skip to content

Commit 1dc3798

Browse files
committed
Fix UNKNOWN default values in ext/spl
1 parent 1cbdbc3 commit 1dc3798

File tree

3 files changed

+16
-11
lines changed

3 files changed

+16
-11
lines changed

ext/spl/php_spl.c

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -310,12 +310,16 @@ PHP_FUNCTION(spl_autoload)
310310
{
311311
int pos_len, pos1_len;
312312
char *pos, *pos1;
313-
zend_string *class_name, *lc_name, *file_exts = SPL_G(autoload_extensions);
313+
zend_string *class_name, *lc_name, *file_exts = NULL;
314314

315-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "S|S", &class_name, &file_exts) == FAILURE) {
315+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "S|S!", &class_name, &file_exts) == FAILURE) {
316316
RETURN_THROWS();
317317
}
318318

319+
if (!file_exts) {
320+
file_exts = SPL_G(autoload_extensions);
321+
}
322+
319323
if (file_exts == NULL) { /* autoload_extensions is not initialized, set to defaults */
320324
pos = SPL_DEFAULT_FILE_EXTENSIONS;
321325
pos_len = sizeof(SPL_DEFAULT_FILE_EXTENSIONS) - 1;
@@ -347,9 +351,10 @@ PHP_FUNCTION(spl_autoload_extensions)
347351
{
348352
zend_string *file_exts = NULL;
349353

350-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|S", &file_exts) == FAILURE) {
354+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|S!", &file_exts) == FAILURE) {
351355
RETURN_THROWS();
352356
}
357+
353358
if (file_exts) {
354359
if (SPL_G(autoload_extensions)) {
355360
zend_string_release_ex(SPL_G(autoload_extensions), 0);
@@ -513,11 +518,11 @@ PHP_FUNCTION(spl_autoload_register)
513518
zend_object *obj_ptr;
514519
zend_fcall_info_cache fcc;
515520

516-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|zbb", &zcallable, &do_throw, &prepend) == FAILURE) {
521+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|z!bb", &zcallable, &do_throw, &prepend) == FAILURE) {
517522
RETURN_THROWS();
518523
}
519524

520-
if (ZEND_NUM_ARGS()) {
525+
if (zcallable) {
521526
if (!zend_is_callable_ex(zcallable, NULL, 0, &func_name, &fcc, &error)) {
522527
alfi.ce = fcc.calling_scope;
523528
alfi.func_ptr = fcc.function_handler;

ext/spl/php_spl.stub.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ function class_parents($instance, bool $autoload = true): array|false {}
88

99
function class_uses($what, bool $autoload = true): array|false {}
1010

11-
function spl_autoload(string $class_name, string $file_extensions = UNKNOWN): void {}
11+
function spl_autoload(string $class_name, ?string $file_extensions = null): void {}
1212

1313
// This silently ignores non-string class names
1414
function spl_autoload_call($class_name): void {}
1515

16-
function spl_autoload_extensions(string $file_extensions = UNKNOWN): string {}
16+
function spl_autoload_extensions(?string $file_extensions = null): string {}
1717

1818
function spl_autoload_functions(): array|false {}
1919

20-
function spl_autoload_register($autoload_function = UNKNOWN, bool $throw = true, bool $prepend = false): bool {}
20+
function spl_autoload_register($autoload_function = null, bool $throw = true, bool $prepend = false): bool {}
2121

2222
function spl_autoload_unregister($autoload_function): bool {}
2323

ext/spl/php_spl_arginfo.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,22 @@ ZEND_END_ARG_INFO()
1414

1515
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_spl_autoload, 0, 1, IS_VOID, 0)
1616
ZEND_ARG_TYPE_INFO(0, class_name, IS_STRING, 0)
17-
ZEND_ARG_TYPE_INFO(0, file_extensions, IS_STRING, 0)
17+
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, file_extensions, IS_STRING, 1, "null")
1818
ZEND_END_ARG_INFO()
1919

2020
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_spl_autoload_call, 0, 1, IS_VOID, 0)
2121
ZEND_ARG_INFO(0, class_name)
2222
ZEND_END_ARG_INFO()
2323

2424
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_spl_autoload_extensions, 0, 0, IS_STRING, 0)
25-
ZEND_ARG_TYPE_INFO(0, file_extensions, IS_STRING, 0)
25+
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, file_extensions, IS_STRING, 1, "null")
2626
ZEND_END_ARG_INFO()
2727

2828
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_spl_autoload_functions, 0, 0, MAY_BE_ARRAY|MAY_BE_FALSE)
2929
ZEND_END_ARG_INFO()
3030

3131
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_spl_autoload_register, 0, 0, _IS_BOOL, 0)
32-
ZEND_ARG_INFO(0, autoload_function)
32+
ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, autoload_function, "null")
3333
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, throw, _IS_BOOL, 0, "true")
3434
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, prepend, _IS_BOOL, 0, "false")
3535
ZEND_END_ARG_INFO()

0 commit comments

Comments
 (0)