Commit aeda89141fd for php.net

commit aeda89141fd8da1dbb0bdedcf96b0149ea75ae1a
Author: Gina Peter Banyard <girgias@php.net>
Date:   Thu Apr 23 19:27:53 2026 +0100

    ext/phar: refactor clean-up code on Windows for phar_open_parsed_phar() (#21839)

diff --git a/ext/phar/phar.c b/ext/phar/phar.c
index 05655aa4151..716c9fda7c6 100644
--- a/ext/phar/phar.c
+++ b/ext/phar/phar.c
@@ -504,15 +504,20 @@ static zend_result phar_open_parsed_phar(char *fname, size_t fname_len, char *al
 		phar_unixify_path_separators(fname, fname_len);
 	}
 #endif
-	if (SUCCESS == phar_get_archive(&phar, fname, fname_len, alias, alias_len, error)
-		&& ((alias && zend_string_equals_cstr(phar->fname, fname, fname_len)) || !alias)
-	) {
+	zend_result archive_retrieved = phar_get_archive(&phar, fname, fname_len, alias, alias_len, error);
+	/* logic is as follows:
+	   - If no alias was passed in, then it can match either and be valid
+	   - If an explicit alias was requested, ensure the filename passed in matches the phar's filename.
+	 */
+	bool process_phar = SUCCESS == archive_retrieved && (!alias || zend_string_equals_cstr(phar->fname, fname, fname_len));
 #ifdef PHP_WIN32
-		if (fname != save_fname) {
-			free_alloca(fname, fname_use_heap);
-			fname = save_fname;
-		}
+	if (fname != save_fname) {
+		free_alloca(fname, fname_use_heap);
+		fname = save_fname;
+	}
 #endif
+
+	if (process_phar) {
 		/* logic above is as follows:
 		   If an explicit alias was requested, ensure the filename passed in
 		   matches the phar's filename.
@@ -537,12 +542,6 @@ static zend_result phar_open_parsed_phar(char *fname, size_t fname_len, char *al

 		return SUCCESS;
 	} else {
-#ifdef PHP_WIN32
-		if (fname != save_fname) {
-			free_alloca(fname, fname_use_heap);
-			fname = save_fname;
-		}
-#endif
 		if (pphar) {
 			*pphar = NULL;
 		}