From 68665d3cb5dcda5b966fc9edd577581be763ee63 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Mon, 17 Mar 2025 14:23:41 +0000 Subject: [PATCH] ext/standard/dir.c: Use new PHP_Z_PARAM_STREAM_OR_NULL() ZPP specifier --- ext/standard/dir.c | 35 ++++++++----------- .../dir/closedir_variation2-win32-mb.phpt | 2 +- .../tests/dir/closedir_variation2.phpt | 2 +- .../dir/rewinddir_variation2-win32-mb.phpt | 2 +- .../tests/dir/rewinddir_variation2.phpt | 2 +- 5 files changed, 18 insertions(+), 25 deletions(-) diff --git a/ext/standard/dir.c b/ext/standard/dir.c index 845fcd03eea..b468681ac36 100644 --- a/ext/standard/dir.c +++ b/ext/standard/dir.c @@ -157,25 +157,18 @@ PHP_FUNCTION(dir) /* }}} */ -static php_stream* php_dir_get_directory_stream_from_user_arg(zval *arg) +static php_stream* php_dir_get_directory_stream_from_user_arg(php_stream *dir_stream) { - zend_resource *res; - if (arg == NULL) { + if (dir_stream == NULL) { if (UNEXPECTED(DIRG(default_dir) == NULL)) { zend_type_error("No resource supplied"); return NULL; } - res = DIRG(default_dir); - } else { - ZEND_ASSERT(Z_TYPE_P(arg) == IS_RESOURCE); - res = Z_RES_P(arg); + zend_resource *res = DIRG(default_dir); + ZEND_ASSERT(res->type == php_file_le_stream()); + dir_stream = (php_stream*) res->ptr; } - if (UNEXPECTED(res->type != php_file_le_stream())) { - zend_argument_type_error(1, "must be a valid Directory resource"); - return NULL; - } - php_stream *dir_stream = (php_stream*) res->ptr; if (UNEXPECTED((dir_stream->flags & PHP_STREAM_FLAG_IS_DIR)) == 0) { zend_argument_type_error(1, "must be a valid Directory resource"); return NULL; @@ -209,14 +202,14 @@ static php_stream* php_dir_get_directory_stream_from_this(zval *this_z) /* {{{ Close directory connection identified by the dir_handle */ PHP_FUNCTION(closedir) { - zval *id = NULL; + php_stream *dirp = NULL; ZEND_PARSE_PARAMETERS_START(0, 1) Z_PARAM_OPTIONAL - Z_PARAM_RESOURCE_OR_NULL(id) + PHP_Z_PARAM_STREAM_OR_NULL(dirp) ZEND_PARSE_PARAMETERS_END(); - php_stream *dirp = php_dir_get_directory_stream_from_user_arg(id); + dirp = php_dir_get_directory_stream_from_user_arg(dirp); if (UNEXPECTED(dirp == NULL)) { RETURN_THROWS(); } @@ -249,14 +242,14 @@ PHP_METHOD(Directory, close) /* {{{ Rewind dir_handle back to the start */ PHP_FUNCTION(rewinddir) { - zval *id = NULL; + php_stream *dirp = NULL; ZEND_PARSE_PARAMETERS_START(0, 1) Z_PARAM_OPTIONAL - Z_PARAM_RESOURCE_OR_NULL(id) + PHP_Z_PARAM_STREAM_OR_NULL(dirp) ZEND_PARSE_PARAMETERS_END(); - php_stream *dirp = php_dir_get_directory_stream_from_user_arg(id); + dirp = php_dir_get_directory_stream_from_user_arg(dirp); if (UNEXPECTED(dirp == NULL)) { RETURN_THROWS(); } @@ -280,14 +273,14 @@ PHP_METHOD(Directory, rewind) /* {{{ Read directory entry from dir_handle */ PHP_FUNCTION(readdir) { - zval *id = NULL; + php_stream *dirp = NULL; ZEND_PARSE_PARAMETERS_START(0, 1) Z_PARAM_OPTIONAL - Z_PARAM_RESOURCE_OR_NULL(id) + PHP_Z_PARAM_STREAM_OR_NULL(dirp) ZEND_PARSE_PARAMETERS_END(); - php_stream *dirp = php_dir_get_directory_stream_from_user_arg(id); + dirp = php_dir_get_directory_stream_from_user_arg(dirp); if (UNEXPECTED(dirp == NULL)) { RETURN_THROWS(); } diff --git a/ext/standard/tests/dir/closedir_variation2-win32-mb.phpt b/ext/standard/tests/dir/closedir_variation2-win32-mb.phpt index 08842ae7f7b..1ada5b7fb36 100644 --- a/ext/standard/tests/dir/closedir_variation2-win32-mb.phpt +++ b/ext/standard/tests/dir/closedir_variation2-win32-mb.phpt @@ -47,5 +47,5 @@ NULL Directory Handle: resource(%d) of type (Unknown) -- Close directory handle second time: -- -closedir(): Argument #1 ($dir_handle) must be a valid Directory resource +closedir(): Argument #1 ($dir_handle) must be an open stream resource Directory Handle: resource(%d) of type (Unknown) diff --git a/ext/standard/tests/dir/closedir_variation2.phpt b/ext/standard/tests/dir/closedir_variation2.phpt index e8518c3d3ef..7898c9ae0ff 100644 --- a/ext/standard/tests/dir/closedir_variation2.phpt +++ b/ext/standard/tests/dir/closedir_variation2.phpt @@ -41,5 +41,5 @@ NULL Directory Handle: resource(%d) of type (Unknown) -- Close directory handle second time: -- -closedir(): Argument #1 ($dir_handle) must be a valid Directory resource +closedir(): Argument #1 ($dir_handle) must be an open stream resource Directory Handle: resource(%d) of type (Unknown) diff --git a/ext/standard/tests/dir/rewinddir_variation2-win32-mb.phpt b/ext/standard/tests/dir/rewinddir_variation2-win32-mb.phpt index 7cb9f2616c5..4bd69b61ff7 100644 --- a/ext/standard/tests/dir/rewinddir_variation2-win32-mb.phpt +++ b/ext/standard/tests/dir/rewinddir_variation2-win32-mb.phpt @@ -42,4 +42,4 @@ resource(%d) of type (stream) string(%d) "%s" -- Call to rewinddir() -- -rewinddir(): Argument #1 ($dir_handle) must be a valid Directory resource +rewinddir(): Argument #1 ($dir_handle) must be an open stream resource diff --git a/ext/standard/tests/dir/rewinddir_variation2.phpt b/ext/standard/tests/dir/rewinddir_variation2.phpt index 16d66da7f82..7ce3c522352 100644 --- a/ext/standard/tests/dir/rewinddir_variation2.phpt +++ b/ext/standard/tests/dir/rewinddir_variation2.phpt @@ -36,4 +36,4 @@ resource(%d) of type (stream) string(%d) "%s" -- Call to rewinddir() -- -rewinddir(): Argument #1 ($dir_handle) must be a valid Directory resource +rewinddir(): Argument #1 ($dir_handle) must be an open stream resource