diff --git a/UPGRADING b/UPGRADING index 2d76009808b07..12cffeb9127e5 100644 --- a/UPGRADING +++ b/UPGRADING @@ -27,6 +27,15 @@ PHP 8.2 UPGRADE NOTES array_change_key_case and sorting with SORT_FLAG_CASE use ASCII case conversion. +- SPL: + . The following methods now enforce their signature: + * SplFileInfo::_bad_state_ex() + * SplFileObject::getCsvControl() + * SplFileObject::fflush() + * SplFileObject::ftell() + * SplFileObject::fgetc() + * SplFileObject::fpassthru() + ======================================== 2. New Features ======================================== diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index f3d4fa2b92f7a..396440aeab57c 100644 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -1399,6 +1399,9 @@ PHP_METHOD(SplFileInfo, __debugInfo) /* {{{ */ PHP_METHOD(SplFileInfo, _bad_state_ex) { + if (zend_parse_parameters_none() == FAILURE) { + RETURN_THROWS(); + } zend_throw_error(NULL, "The parent constructor was not called: the object is in an invalid state"); } /* }}} */ @@ -2476,6 +2479,10 @@ PHP_METHOD(SplFileObject, getCsvControl) spl_filesystem_object *intern = Z_SPLFILESYSTEM_P(ZEND_THIS); char delimiter[2], enclosure[2], escape[2]; + if (zend_parse_parameters_none() == FAILURE) { + RETURN_THROWS(); + } + array_init(return_value); delimiter[0] = intern->u.file.delimiter; @@ -2517,6 +2524,10 @@ PHP_METHOD(SplFileObject, fflush) { spl_filesystem_object *intern = Z_SPLFILESYSTEM_P(ZEND_THIS); + if (zend_parse_parameters_none() == FAILURE) { + RETURN_THROWS(); + } + CHECK_SPL_FILE_OBJECT_IS_INITIALIZED(intern); RETURN_BOOL(!php_stream_flush(intern->u.file.stream)); @@ -2528,6 +2539,10 @@ PHP_METHOD(SplFileObject, ftell) spl_filesystem_object *intern = Z_SPLFILESYSTEM_P(ZEND_THIS); zend_long ret; + if (zend_parse_parameters_none() == FAILURE) { + RETURN_THROWS(); + } + CHECK_SPL_FILE_OBJECT_IS_INITIALIZED(intern); ret = php_stream_tell(intern->u.file.stream); @@ -2562,6 +2577,10 @@ PHP_METHOD(SplFileObject, fgetc) char buf[2]; int result; + if (zend_parse_parameters_none() == FAILURE) { + RETURN_THROWS(); + } + CHECK_SPL_FILE_OBJECT_IS_INITIALIZED(intern); spl_filesystem_file_free_line(intern); @@ -2585,6 +2604,10 @@ PHP_METHOD(SplFileObject, fpassthru) { spl_filesystem_object *intern = Z_SPLFILESYSTEM_P(ZEND_THIS); + if (zend_parse_parameters_none() == FAILURE) { + RETURN_THROWS(); + } + CHECK_SPL_FILE_OBJECT_IS_INITIALIZED(intern); RETURN_LONG(php_stream_passthru(intern->u.file.stream));