From 6c1ba02e0cacfd66cf36d40a4b0f9794bc2ca26e Mon Sep 17 00:00:00 2001 From: Lioncash Date: Thu, 19 Jul 2018 11:01:05 -0400 Subject: [PATCH] fsp_srv: Remove unnecessary vector construction in IFile's Write() function We can avoid constructing a std::vector here by simply passing a pointer to the original data and the size of the copy we wish to perform to the backend's Write() function instead, avoiding copying the data where it's otherwise not needed. --- src/core/hle/service/filesystem/fsp_srv.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/core/hle/service/filesystem/fsp_srv.cpp b/src/core/hle/service/filesystem/fsp_srv.cpp index 673eaabf0..e7ffb6bd1 100644 --- a/src/core/hle/service/filesystem/fsp_srv.cpp +++ b/src/core/hle/service/filesystem/fsp_srv.cpp @@ -149,8 +149,9 @@ private: length, data.size()); // Write the data to the Storage backend - std::vector actual_data(data.begin(), data.begin() + length); - const std::size_t written = backend->WriteBytes(std::move(actual_data), offset); + const auto write_size = + static_cast(std::distance(data.begin(), data.begin() + length)); + const std::size_t written = backend->Write(data.data(), write_size, offset); ASSERT_MSG(static_cast(written) == length, "Could not write all bytes to file (requested={:016X}, actual={:016X}).", length,