From 646c2b2706f4565437e5d9cbd1b313065645d710 Mon Sep 17 00:00:00 2001 From: Franck Dary <franck.dary@lis-lab.fr> Date: Mon, 8 Jun 2020 10:27:12 +0200 Subject: [PATCH] Fixed memory bug in prefix and suffix functions --- common/src/util.cpp | 5 ++++- torch_modules/src/Submodule.cpp | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/common/src/util.cpp b/common/src/util.cpp index 3b8aa96..a40362c 100644 --- a/common/src/util.cpp +++ b/common/src/util.cpp @@ -58,9 +58,12 @@ util::utf8string util::splitAsUtf8(std::string_view s) } if (currentPtr - beginPtr > 4 || currentPtr - beginPtr == 0) myThrow(fmt::format("Invalid utf8 character at index {}", beginPtr-s.data())); + utf8char c; + for (int i = 0; i < currentPtr - beginPtr; i++) - ((char*)&c)[i] = beginPtr[i]; + c[i] = beginPtr[i]; + beginPtr = currentPtr; result.push_back(c); } diff --git a/torch_modules/src/Submodule.cpp b/torch_modules/src/Submodule.cpp index 2be33f7..e58ff28 100644 --- a/torch_modules/src/Submodule.cpp +++ b/torch_modules/src/Submodule.cpp @@ -67,6 +67,9 @@ std::function<std::string(const std::string &)> Submodule::getFunction(const std { static auto prefix = [](const std::string & s, int length) { + if (s.size() == 0) + return s; + util::utf8string utf8s = util::splitAsUtf8(s); util::utf8string prefix(utf8s.begin(), std::min(utf8s.end(),utf8s.begin()+length)); return fmt::format("{}", prefix); @@ -74,6 +77,9 @@ std::function<std::string(const std::string &)> Submodule::getFunction(const std static auto suffix = [](const std::string & s, int length) { + if (s.size() == 0) + return s; + util::utf8string utf8s = util::splitAsUtf8(s); util::utf8string suffix(std::max(utf8s.begin(), utf8s.end()-length), utf8s.end()); return fmt::format("{}", suffix); -- GitLab