summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Lioncash2018-07-19 11:01:05 -0400
committerGravatar Lioncash2018-07-19 11:01:07 -0400
commit6c1ba02e0cacfd66cf36d40a4b0f9794bc2ca26e (patch)
tree63998475a888bfdfb0a0c1f1aabcc903fd8b6f95 /src
parentfsp_srv: Remove unnecessary std::vector construction in IDirectory's Read() f... (diff)
downloadyuzu-6c1ba02e0cacfd66cf36d40a4b0f9794bc2ca26e.tar.gz
yuzu-6c1ba02e0cacfd66cf36d40a4b0f9794bc2ca26e.tar.xz
yuzu-6c1ba02e0cacfd66cf36d40a4b0f9794bc2ca26e.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/service/filesystem/fsp_srv.cpp5
1 files 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:
149 length, data.size()); 149 length, data.size());
150 150
151 // Write the data to the Storage backend 151 // Write the data to the Storage backend
152 std::vector<u8> actual_data(data.begin(), data.begin() + length); 152 const auto write_size =
153 const std::size_t written = backend->WriteBytes(std::move(actual_data), offset); 153 static_cast<std::size_t>(std::distance(data.begin(), data.begin() + length));
154 const std::size_t written = backend->Write(data.data(), write_size, offset);
154 155
155 ASSERT_MSG(static_cast<s64>(written) == length, 156 ASSERT_MSG(static_cast<s64>(written) == length,
156 "Could not write all bytes to file (requested={:016X}, actual={:016X}).", length, 157 "Could not write all bytes to file (requested={:016X}, actual={:016X}).", length,