aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2018-07-19 09:53:35 -0400
committerLioncash <mathew1800@gmail.com>2018-07-19 09:57:48 -0400
commit106207e2ca7a72f1d52d7bd063ce79bcaeca6fc7 (patch)
tree7e444921bee8ca9922431a3bd6da6e3ff9375690 /src
parent49881ebe2c4023a2e4a38b224bf9013dee7e24db (diff)
fsp_srv: Respect write length in Write()
Previously we were just copying the data whole-sale, even if the length was less than the total data size. This effectively makes the actual_data vector useless, which is likely not intended. Instead, amend this to only copy the given length amount of data. At the same time, we can avoid zeroing out the data before using it by passing iterators to the constructor instead of a size.
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/service/filesystem/fsp_srv.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/core/hle/service/filesystem/fsp_srv.cpp b/src/core/hle/service/filesystem/fsp_srv.cpp
index 1b003bd843..e3f237c5c7 100644
--- a/src/core/hle/service/filesystem/fsp_srv.cpp
+++ b/src/core/hle/service/filesystem/fsp_srv.cpp
@@ -3,6 +3,8 @@
// Refer to the license.txt file included.
#include <cinttypes>
+#include <utility>
+
#include "common/logging/log.h"
#include "common/string_util.h"
#include "core/core.h"
@@ -133,17 +135,16 @@ private:
return;
}
- std::vector<u8> data = ctx.ReadBuffer();
- std::vector<u8> actual_data(length);
+ const std::vector<u8> data = ctx.ReadBuffer();
ASSERT_MSG(
data.size() <= length,
"Attempting to write more data than requested (requested={:016X}, actual={:016X}).",
length, data.size());
- std::copy(data.begin(), data.end(), actual_data.begin());
// Write the data to the Storage backend
- auto written = backend->WriteBytes(data, offset);
+ std::vector<u8> actual_data(data.begin(), data.begin() + length);
+ const auto written = backend->WriteBytes(std::move(actual_data), offset);
ASSERT_MSG(written == length,
"Could not write all bytes to file (requested={:016X}, actual={:016X}).", length,