From 4d68a2edbe97c75ae7690587ce632c2fd4b57afa Mon Sep 17 00:00:00 2001 From: Kawe Mazidjatari <48657826+Mauler125@users.noreply.github.com> Date: Sun, 12 Feb 2023 23:28:24 +0100 Subject: [PATCH] Fix deadlock when file entry is truncated * Fixed endless loop when condition is hit. * Fixed file name not being formatted correctly. --- r5dev/vpklib/packedstore.cpp | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/r5dev/vpklib/packedstore.cpp b/r5dev/vpklib/packedstore.cpp index 32ae5a6b..1fda2c27 100644 --- a/r5dev/vpklib/packedstore.cpp +++ b/r5dev/vpklib/packedstore.cpp @@ -167,18 +167,19 @@ vector CPackedStore::GetEntryValues(const string& svWorkspace, K { if (!dir->file_size()) // Empty files are not supported. { - Warning(eDLL_T::FS, "File '%s' listed in build manifest appears truncated\n", dir->path().relative_path().c_str()); - continue; + Warning(eDLL_T::FS, "File '%s' listed in build manifest appears truncated\n", dir->path().relative_path().string().c_str()); + } + else + { + vEntryValues.push_back(VPKKeyValues_t( + ConvertToUnixPath(svFullPath), + pEntryKV->GetInt("preloadSize", NULL), + pEntryKV->GetInt("loadFlags", static_cast(EPackedLoadFlags::LOAD_VISIBLE) | static_cast(EPackedLoadFlags::LOAD_CACHE)), + pEntryKV->GetInt("textureFlags", static_cast(EPackedTextureFlags::TEXTURE_DEFAULT)), + pEntryKV->GetBool("useCompression", true), + pEntryKV->GetBool("useDataSharing", true)) + ); } - - vEntryValues.push_back(VPKKeyValues_t( - ConvertToUnixPath(svFullPath), - pEntryKV->GetInt("preloadSize", NULL), - pEntryKV->GetInt("loadFlags", static_cast(EPackedLoadFlags::LOAD_VISIBLE) | static_cast(EPackedLoadFlags::LOAD_CACHE)), - pEntryKV->GetInt("textureFlags", static_cast(EPackedTextureFlags::TEXTURE_DEFAULT)), - pEntryKV->GetBool("useCompression", true), - pEntryKV->GetBool("useDataSharing", true)) - ); } } dir++;