From 603b6c7da2dd6adf3cfb7a1f5e027028cef65fd6 Mon Sep 17 00:00:00 2001 From: Malkierian Date: Tue, 11 Feb 2025 10:00:44 -0700 Subject: [PATCH] More Filesize 0 changes (#803) * Make `OtrArchive` and `O2rArchive` trace on filesize 0 and return nullptr. Make `LoadResourceProcess` return nullptr from file being nullptr before running `LoadResource`. Change `fileToLoad == nullptr` log to TRACE in `Archive::LoadFile`. * formatting --- src/resource/ResourceManager.cpp | 1 + src/resource/archive/Archive.cpp | 2 +- src/resource/archive/O2rArchive.cpp | 6 ++++++ src/resource/archive/OtrArchive.cpp | 4 ++++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/resource/ResourceManager.cpp b/src/resource/ResourceManager.cpp index ac0bdf8a7..a48c49d43 100644 --- a/src/resource/ResourceManager.cpp +++ b/src/resource/ResourceManager.cpp @@ -143,6 +143,7 @@ std::shared_ptr ResourceManager::LoadResourceProcess(const ResourceId auto file = LoadFileProcess(identifier.Path, initData); if (file == nullptr) { SPDLOG_TRACE("Failed to load resource file at path {}", identifier.Path); + return nullptr; } // Transform the raw data into a resource diff --git a/src/resource/archive/Archive.cpp b/src/resource/archive/Archive.cpp index 1970c9ddf..1a800756a 100644 --- a/src/resource/archive/Archive.cpp +++ b/src/resource/archive/Archive.cpp @@ -219,7 +219,7 @@ std::shared_ptr Archive::LoadFile(const std::string& filePath, std::shared } else { fileToLoad = LoadFileRaw(filePath); if (fileToLoad == nullptr) { - SPDLOG_ERROR("Failed to load file at path {}.", filePath); + SPDLOG_TRACE("Failed to load file at path {}.", filePath); return nullptr; } fileToLoad->InitData = ReadResourceInitDataLegacy(filePath, fileToLoad); diff --git a/src/resource/archive/O2rArchive.cpp b/src/resource/archive/O2rArchive.cpp index 5bc76e897..98a038d4c 100644 --- a/src/resource/archive/O2rArchive.cpp +++ b/src/resource/archive/O2rArchive.cpp @@ -36,6 +36,12 @@ std::shared_ptr O2rArchive::LoadFileRaw(const std::string& filePath) { return nullptr; } + // Filesize 0, no logging needed + if (zipEntryStat.size == 0) { + SPDLOG_TRACE("({}) Failed to load file {}; filesize 0", GetLastError(), filePath, GetPath()); + return nullptr; + } + struct zip_file* zipEntryFile = zip_fopen_index(mZipArchive, zipEntryIndex, 0); if (!zipEntryFile) { SPDLOG_TRACE("Failed to open file {} in zip archive {}.", filePath, GetPath()); diff --git a/src/resource/archive/OtrArchive.cpp b/src/resource/archive/OtrArchive.cpp index 197934ed8..0ae907117 100644 --- a/src/resource/archive/OtrArchive.cpp +++ b/src/resource/archive/OtrArchive.cpp @@ -33,6 +33,10 @@ std::shared_ptr OtrArchive::LoadFileRaw(const std::string& filePath) { auto fileToLoad = std::make_shared(); DWORD fileSize = SFileGetFileSize(fileHandle, 0); + if (fileSize == 0) { + SPDLOG_TRACE("({}) Failed to load file {}; filesize 0", GetLastError(), filePath, GetPath()); + return nullptr; + } DWORD readBytes; fileToLoad->Buffer = std::make_shared>(fileSize); bool readFileSuccess = SFileReadFile(fileHandle, fileToLoad->Buffer->data(), fileSize, &readBytes, NULL);