Browse Source

AssbinImporter::ReadInternFile now closes stream before throwing (#5927)

While one of the throws in the function did indeed close the open stream,
several didn't.

Co-authored-by: Kim Kulling <[email protected]>
David Campos Rodríguez 8 months ago
parent
commit
a4d8a5fec3
1 changed files with 4 additions and 1 deletions
  1. 4 1
      code/AssetLib/Assbin/AssbinLoader.cpp

+ 4 - 1
code/AssetLib/Assbin/AssbinLoader.cpp

@@ -688,6 +688,7 @@ void AssbinImporter::InternReadFile(const std::string &pFile, aiScene *pScene, I
     unsigned int versionMajor = Read<unsigned int>(stream);
     unsigned int versionMinor = Read<unsigned int>(stream);
     if (versionMinor != ASSBIN_VERSION_MINOR || versionMajor != ASSBIN_VERSION_MAJOR) {
+        pIOHandler->Close(stream);
         throw DeadlyImportError("Invalid version, data format not compatible!");
     }
 
@@ -697,8 +698,10 @@ void AssbinImporter::InternReadFile(const std::string &pFile, aiScene *pScene, I
     shortened = Read<uint16_t>(stream) > 0;
     compressed = Read<uint16_t>(stream) > 0;
 
-    if (shortened)
+    if (shortened) {
+        pIOHandler->Close(stream);
         throw DeadlyImportError("Shortened binaries are not supported!");
+    }
 
     stream->Seek(256, aiOrigin_CUR); // original filename
     stream->Seek(128, aiOrigin_CUR); // options