diff --git a/plugins/libimhex/include/hex/pattern_language/pattern_data.hpp b/plugins/libimhex/include/hex/pattern_language/pattern_data.hpp index 773983113..26a3cde7e 100644 --- a/plugins/libimhex/include/hex/pattern_language/pattern_data.hpp +++ b/plugins/libimhex/include/hex/pattern_language/pattern_data.hpp @@ -642,6 +642,10 @@ namespace hex::pl { provider->read(this->getOffset(), buffer.data(), size); + std::erase_if(buffer, [](auto c){ + return c == 0x00; + }); + this->createDefaultEntry(hex::format("\"{0}\" {1}", makeDisplayable(buffer.data(), this->getSize()), size > this->getSize() ? "(truncated)" : ""), buffer); } @@ -653,6 +657,10 @@ namespace hex::pl { std::string buffer(this->getSize(), 0x00); provider->read(this->getOffset(), buffer.data(), buffer.size()); + std::erase_if(buffer, [](auto c){ + return c == 0x00; + }); + return buffer; } @@ -677,6 +685,10 @@ namespace hex::pl { for (auto &c : buffer) c = hex::changeEndianess(c, 2, this->getEndian()); + std::erase_if(buffer, [](auto c){ + return c == 0x00; + }); + auto utf8String = std::wstring_convert, char16_t>{}.to_bytes(buffer); this->createDefaultEntry(hex::format("\"{0}\" {1}", utf8String, size > this->getSize() ? "(truncated)" : ""), utf8String); @@ -693,6 +705,10 @@ namespace hex::pl { for (auto &c : buffer) c = hex::changeEndianess(c, 2, this->getEndian()); + std::erase_if(buffer, [](auto c){ + return c == 0x00; + }); + return std::wstring_convert, char16_t>{}.to_bytes(buffer); }