aboutsummaryrefslogtreecommitdiff
path: root/src/tools/connection_patcher/Patcher.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2014-12-29 18:52:42 +0100
committerShauren <shauren.trinity@gmail.com>2014-12-29 18:52:42 +0100
commit419db6c82fff996f368cb6e87472b3a5da0d4f89 (patch)
tree9696071801b7f65002c98b2f6eeda79e2daed708 /src/tools/connection_patcher/Patcher.cpp
parentddb0b1acda95f616b0dcf0c0126c0c012345076f (diff)
Tools/Patcher: Optimized loading binary file by patcher
Diffstat (limited to 'src/tools/connection_patcher/Patcher.cpp')
-rw-r--r--src/tools/connection_patcher/Patcher.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/tools/connection_patcher/Patcher.cpp b/src/tools/connection_patcher/Patcher.cpp
index 92d9dacedf3..e64da12b4aa 100644
--- a/src/tools/connection_patcher/Patcher.cpp
+++ b/src/tools/connection_patcher/Patcher.cpp
@@ -35,9 +35,15 @@ namespace
if (!ifs)
throw std::runtime_error("could not open " + path.string());
+ std::vector<unsigned char> binary;
ifs >> std::noskipws;
+ ifs.seekg(0, std::ios_base::end);
+ binary.reserve(ifs.tellg());
+ ifs.seekg(0, std::ios_base::beg);
- return {std::istream_iterator<unsigned char>(ifs), std::istream_iterator<unsigned char>()};
+ std::copy(std::istream_iterator<unsigned char>(ifs), std::istream_iterator<unsigned char>(), std::back_inserter(binary));
+
+ return binary;
}
void write_file(boost::filesystem::path const& path, std::vector<unsigned char> const& data)
@@ -51,7 +57,7 @@ namespace
std::copy(data.begin(), data.end(), std::ostream_iterator<unsigned char>(ofs));
}
- std::set<size_t> SearchOffset (std::vector<unsigned char> const& binary, std::vector<unsigned char> const& pattern)
+ std::set<size_t> SearchOffset(std::vector<unsigned char> const& binary, std::vector<unsigned char> const& pattern)
{
std::set<size_t> offsets;
for (size_t i = 0; (i + pattern.size()) < binary.size(); i++)