diff options
author | Elias Fleckenstein <eliasfleckenstein@web.de> | 2021-02-10 19:50:36 +0100 |
---|---|---|
committer | Elias Fleckenstein <eliasfleckenstein@web.de> | 2021-02-10 19:50:36 +0100 |
commit | 1fbbb768252f872dfa961d3a73460d996164d527 (patch) | |
tree | e9faf93dbd894b253ac3d1f0895b7468e8fee50d /src/itemstackmetadata.cpp | |
parent | 74f5f033e04c0d8694815fedb795838d4926cbc9 (diff) | |
parent | 9736b9cea5f841bb0e9bb2c9c05c3b2560327064 (diff) | |
download | dragonfireclient-1fbbb768252f872dfa961d3a73460d996164d527.tar.xz |
Merge branch 'master' of https://github.com/minetest/minetest
Diffstat (limited to 'src/itemstackmetadata.cpp')
-rw-r--r-- | src/itemstackmetadata.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/itemstackmetadata.cpp b/src/itemstackmetadata.cpp index 4aa1a0903..7a26fbb0e 100644 --- a/src/itemstackmetadata.cpp +++ b/src/itemstackmetadata.cpp @@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "itemstackmetadata.h" #include "util/serialize.h" #include "util/strfnd.h" +#include <algorithm> #define DESERIALIZE_START '\x01' #define DESERIALIZE_KV_DELIM '\x02' @@ -37,10 +38,22 @@ void ItemStackMetadata::clear() updateToolCapabilities(); } +static void sanitize_string(std::string &str) +{ + str.erase(std::remove(str.begin(), str.end(), DESERIALIZE_START), str.end()); + str.erase(std::remove(str.begin(), str.end(), DESERIALIZE_KV_DELIM), str.end()); + str.erase(std::remove(str.begin(), str.end(), DESERIALIZE_PAIR_DELIM), str.end()); +} + bool ItemStackMetadata::setString(const std::string &name, const std::string &var) { - bool result = Metadata::setString(name, var); - if (name == TOOLCAP_KEY) + std::string clean_name = name; + std::string clean_var = var; + sanitize_string(clean_name); + sanitize_string(clean_var); + + bool result = Metadata::setString(clean_name, clean_var); + if (clean_name == TOOLCAP_KEY) updateToolCapabilities(); return result; } |