diff --git a/src/libxrpl/basics/MallocTrim.cpp b/src/libxrpl/basics/MallocTrim.cpp index 56ec6f1bc5..112609c36f 100644 --- a/src/libxrpl/basics/MallocTrim.cpp +++ b/src/libxrpl/basics/MallocTrim.cpp @@ -109,10 +109,20 @@ mallocTrim([[maybe_unused]] std::optional const& tag, beast::Journa if (journal.debug()) { auto readFile = [](std::string const& path) -> std::string { - std::ifstream ifs(path); + std::ifstream ifs(path, std::ios::binary); if (!ifs.is_open()) return {}; - return std::string(std::istreambuf_iterator(ifs), std::istreambuf_iterator()); + + ifs.seekg(0, std::ios::end); + auto const size = ifs.tellg(); + if (size < 0) + return {}; + + ifs.seekg(0, std::ios::beg); + std::string result(static_cast(size), '\0'); + ifs.read(result.data(), size); + + return result; }; std::string const tagStr = tag.value_or("default");