From e97b4e53b2559ae8bc56b39f74b0f267b2febcba Mon Sep 17 00:00:00 2001 From: Kawe Mazidjatari <48657826+Mauler125@users.noreply.github.com> Date: Tue, 9 Aug 2022 14:00:51 +0200 Subject: [PATCH] More ConvertToWinPath/ConvertToUnixPath optimizations Don't allocate static buffer on the stack, use the result string instead. --- r5dev/public/utility.cpp | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/r5dev/public/utility.cpp b/r5dev/public/utility.cpp index 2897384f..501cf476 100644 --- a/r5dev/public/utility.cpp +++ b/r5dev/public/utility.cpp @@ -309,38 +309,34 @@ string CreateDirectories(string svInput, bool bWindows) // For converting filepaths to windows filepaths. string ConvertToWinPath(const string& svInput) { - char szFilePath[MAX_PATH]; - string results; - sprintf_s(szFilePath, MAX_PATH, "%s", svInput.c_str()); + string results = svInput; // Flip forward slashes in filepath to windows-style backslash - for (size_t i = 0, len = strlen(szFilePath); i < len; i++) + for (size_t i = 0; i < results.size(); i++) { - if (szFilePath[i] == '/') + if (results[i] == '/') { - szFilePath[i] = '\\'; + results[i] = '\\'; } } - return results = szFilePath; + return results; } /////////////////////////////////////////////////////////////////////////////// // For converting filepaths to unix filepaths. string ConvertToUnixPath(const string& svInput) { - char szFilePath[MAX_PATH]; - string results; - sprintf_s(szFilePath, MAX_PATH, "%s", svInput.c_str()); + string results = svInput; // Flip windows-style backslashes in filepath to forward slash - for (size_t i = 0, len = strlen(szFilePath); i < len; i++) + for (size_t i = 0; i < results.size(); i++) { - if (szFilePath[i] == '\\') + if (results[i] == '\\') { - szFilePath[i] = '/'; + results[i] = '/'; } } - return results = szFilePath; + return results; } ///////////////////////////////////////////////////////////////////////////////