From 556fd33fc329f7634f9b0dadc94011bd46dc6b13 Mon Sep 17 00:00:00 2001 From: elijah-thomas774 Date: Sat, 25 May 2024 16:43:01 -0400 Subject: [PATCH] fixed regswap and matching --- configure.py | 2 +- src/d/d_rawarchive.cpp | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/configure.py b/configure.py index 7abf0df5..4d2e457c 100644 --- a/configure.py +++ b/configure.py @@ -287,7 +287,7 @@ config.libs = [ Object(NonMatching, "d/d_dvd_unk.cpp"), Object(NonMatching, "d/d_dylink.cpp"), Object(NonMatching, "d/d_heap.cpp"), - Object(NonMatching, "d/d_rawarchive.cpp"), + Object(Matching, "d/d_rawarchive.cpp"), Object(NonMatching, "d/d_stage.cpp"), Object(NonMatching, "d/d_sys.cpp"), Object(NonMatching, "d/a/d_a_base.cpp"), diff --git a/src/d/d_rawarchive.cpp b/src/d/d_rawarchive.cpp index 0501f256..888ade40 100644 --- a/src/d/d_rawarchive.cpp +++ b/src/d/d_rawarchive.cpp @@ -137,10 +137,17 @@ bool dRawArcEntry_c::loadArcFromDiskChecked(const char *fileName, const char *di inline void inline_strncat(char *dest, const char *src, size_t destSize) { if (src != nullptr) { size_t destLen = strlen(dest); - size_t srcLen = strlen(src); - size_t count = destLen + srcLen + 1 >= destSize ? destSize - destLen - 1 : srcLen; - strncpy(dest + destLen, src, count); - size_t offset = destLen + count; + size_t copyLen = strlen(src); + + // Make sure copy length isnt more than destination length + if (destLen + copyLen + 1 >= destSize) { + copyLen = destSize - destLen - 1; + } + + strncpy(dest + destLen, src, copyLen); + + // make sure string is null terminated + size_t offset = destLen + copyLen; dest[offset] = '\0'; } }