Fix loading of pk3 q3bsp maps
authorrdb <rdb@users.noreply.github.com>
Thu, 11 Feb 2016 13:10:49 +0000 (14:10 +0100)
committerrdb <rdb@users.noreply.github.com>
Thu, 11 Feb 2016 13:10:49 +0000 (14:10 +0100)
This fixes loading of pk3 maps.  The pk3 files contain directory entries with a size of 0, which triggered an assertion.

code/Q3BSPZipArchive.cpp

index cc21754..cdc6ea2 100644 (file)
@@ -292,7 +292,7 @@ bool Q3BSPZipArchive::mapArchive() {
                         // The file has EXACTLY the size of uncompressed_size. In C
                         // you need to mark the last character with '\0', so add
                         // another character
-                        if(unzOpenCurrentFile(m_ZipFileHandle) == UNZ_OK) {
+                        if(fileInfo.uncompressed_size != 0 && unzOpenCurrentFile(m_ZipFileHandle) == UNZ_OK) {
                             std::pair<std::map<std::string, ZipFile*>::iterator, bool> result = m_ArchiveMap.insert(std::make_pair(filename, new ZipFile(fileInfo.uncompressed_size)));
 
                             if(unzReadCurrentFile(m_ZipFileHandle, result.first->second->m_Buffer, fileInfo.uncompressed_size) == (long int) fileInfo.uncompressed_size) {