From 4d1d737b48a71809d041a90bb421a063626fb908 Mon Sep 17 00:00:00 2001 From: Kawe Mazidjatari <48657826+Mauler125@users.noreply.github.com> Date: Fri, 12 Jan 2024 03:08:31 +0100 Subject: [PATCH] KeyValues: fix bug when loading from file Read file as binary, and check if the file we're opening has a size. --- src/tier1/keyvalues.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/tier1/keyvalues.cpp b/src/tier1/keyvalues.cpp index 63ce05d0..4336ebc6 100644 --- a/src/tier1/keyvalues.cpp +++ b/src/tier1/keyvalues.cpp @@ -1875,7 +1875,7 @@ bool KeyValues::LoadFromFile(IBaseFileSystem* filesystem, const char* resourceNa { //TM_ZONE_FILTERED( TELEMETRY_LEVEL0, 50, TMZF_NONE, "%s %s", __FUNCTION__, tmDynamicString( TELEMETRY_LEVEL0, resourceName ) ); - FileHandle_t f = filesystem->Open(resourceName, "rt", pathID); + FileHandle_t f = filesystem->Open(resourceName, "rb", pathID); if (!f) return false; @@ -1883,6 +1883,10 @@ bool KeyValues::LoadFromFile(IBaseFileSystem* filesystem, const char* resourceNa // load file into a null-terminated buffer const ssize_t fileSize = filesystem->Size(f); + + if (!fileSize) + return false; + std::unique_ptr pBuf(new char[fileSize + 1]); const ssize_t nRead = filesystem->Read(pBuf.get(), fileSize, f);