diff --git a/Utilities/StrFmt.cpp b/Utilities/StrFmt.cpp index 8fbdeda31c..ae150c4f79 100644 --- a/Utilities/StrFmt.cpp +++ b/Utilities/StrFmt.cpp @@ -137,17 +137,14 @@ std::vector fmt::split(const std::string& source, std::initializer_ std::string fmt::merge(std::vector source, const std::string& separator) { - if (!source.size()) - return ""; - std::string result; - for (int i = 0; i < source.size() - 1; ++i) + for (auto &s : source) { - result += source[i] + separator; + result += s + separator; } - return result + source[source.size() - 1]; + return result; } std::string fmt::merge(std::initializer_list> sources, const std::string& separator) @@ -167,4 +164,4 @@ std::string fmt::tolower(std::string source) std::transform(source.begin(), source.end(), source.begin(), ::tolower); return source; -} \ No newline at end of file +} diff --git a/rpcs3/Emu/FS/VFS.cpp b/rpcs3/Emu/FS/VFS.cpp index 01489759a6..d963d9c91f 100644 --- a/rpcs3/Emu/FS/VFS.cpp +++ b/rpcs3/Emu/FS/VFS.cpp @@ -32,12 +32,21 @@ std::string simplify_path(const std::string& path, bool is_dir) { std::vector path_blocks = simplify_path_blocks(path); + std::string result; + if (path_blocks.empty()) - return ""; + return result; - std::string result = fmt::merge(path_blocks, "/"); + if (is_dir) + { + result = fmt::merge(path_blocks, "/"); + } + else + { + result = fmt::merge(std::vector(path_blocks.begin(), path_blocks.end() - 1), "/") + path_blocks[path_blocks.size() - 1]; + } - return is_dir ? result + "/" : result; + return result; } VFS::~VFS()