Browse Source

Fix ZIPReader.get_files() error on empty zip files

Added check for empty zip file before trying to look at first file

Fixes #90388
aaronp64 1 year ago
parent
commit
2dad2fbce2
1 changed files with 8 additions and 1 deletions
  1. 8 1
      modules/zip/zip_reader.cpp

+ 8 - 1
modules/zip/zip_reader.cpp

@@ -58,7 +58,14 @@ Error ZIPReader::close() {
 PackedStringArray ZIPReader::get_files() {
 PackedStringArray ZIPReader::get_files() {
 	ERR_FAIL_COND_V_MSG(fa.is_null(), PackedStringArray(), "ZIPReader must be opened before use.");
 	ERR_FAIL_COND_V_MSG(fa.is_null(), PackedStringArray(), "ZIPReader must be opened before use.");
 
 
-	int err = unzGoToFirstFile(uzf);
+	unz_global_info gi;
+	int err = unzGetGlobalInfo(uzf, &gi);
+	ERR_FAIL_COND_V(err != UNZ_OK, PackedStringArray());
+	if (gi.number_entry == 0) {
+		return PackedStringArray();
+	}
+
+	err = unzGoToFirstFile(uzf);
 	ERR_FAIL_COND_V(err != UNZ_OK, PackedStringArray());
 	ERR_FAIL_COND_V(err != UNZ_OK, PackedStringArray());
 
 
 	List<String> s;
 	List<String> s;