From 6a8f5e6b383a38936c1f3324dde49f1d51dcf823 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Sat, 14 Mar 2020 14:25:37 +0300 Subject: [PATCH] VFS: fix vfs::get Escape each path element separately. --- rpcs3/Emu/VFS.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/VFS.cpp b/rpcs3/Emu/VFS.cpp index a7a98e383e..d4c378e616 100644 --- a/rpcs3/Emu/VFS.cpp +++ b/rpcs3/Emu/VFS.cpp @@ -261,14 +261,20 @@ std::string vfs::get(std::string_view vpath, std::vector* out_dir, return {}; } - // Escape and merge path fragments + // Merge path fragments if (out_path) { *out_path = "/"; *out_path += fmt::merge(name_list, "/"); } - return std::string{result_base} + vfs::escape(fmt::merge(result, "/")); + // Escape for host FS + std::vector escaped; + escaped.reserve(result.size()); + for (auto& sv : result) + escaped.emplace_back(vfs::escape(sv)); + + return std::string{result_base} + fmt::merge(escaped, "/"); } #if __cpp_char8_t >= 201811