diff --git a/ext/zip/php_zip.c b/ext/zip/php_zip.c index 1f5bdb7358b..65e6a0db225 100644 --- a/ext/zip/php_zip.c +++ b/ext/zip/php_zip.c @@ -677,19 +677,6 @@ int php_zip_pcre(zend_string *regexp, char *path, int path_len, zval *return_val break; } - snprintf(fullpath, MAXPATHLEN, "%s%c%s", path, DEFAULT_SLASH, ZSTR_VAL(namelist[i])); - - if (0 != VCWD_STAT(fullpath, &s)) { - php_error_docref(NULL, E_WARNING, "Cannot read <%s>", fullpath); - zend_string_release_ex(namelist[i], 0); - continue; - } - - if (S_IFDIR == (s.st_mode & S_IFMT)) { - zend_string_release_ex(namelist[i], 0); - continue; - } - match_data = php_pcre_create_match_data(capture_count, re); if (!match_data) { /* Allocation failed, but can proceed to the next pattern. */ @@ -704,6 +691,19 @@ int php_zip_pcre(zend_string *regexp, char *path, int path_len, zval *return_val continue; } + snprintf(fullpath, MAXPATHLEN, "%s%c%s", path, DEFAULT_SLASH, ZSTR_VAL(namelist[i])); + + if (0 != VCWD_STAT(fullpath, &s)) { + php_error_docref(NULL, E_WARNING, "Cannot read <%s>", fullpath); + zend_string_release_ex(namelist[i], 0); + continue; + } + + if (S_IFDIR == (s.st_mode & S_IFMT)) { + zend_string_release_ex(namelist[i], 0); + continue; + } + add_next_index_string(return_value, fullpath); zend_string_release_ex(namelist[i], 0); }