aboutsummaryrefslogtreecommitdiff
path: root/src/itemstackmetadata.cpp
diff options
context:
space:
mode:
authorMinetest-j45 <55553015+Minetest-j45@users.noreply.github.com>2021-08-30 15:22:40 +0100
committerGitHub <noreply@github.com>2021-08-30 15:22:40 +0100
commit7824a4956bf489b4e2cc35e0c97272eee06be6ba (patch)
tree70243765dc1743a83596f9c6eec122fb417ef92c /src/itemstackmetadata.cpp
parent607add326feb44e078b843464ce4a8de09f28743 (diff)
parent35445d24f425c6291a0580b468919ca83de716fd (diff)
downloaddragonfireclient-7824a4956bf489b4e2cc35e0c97272eee06be6ba.tar.xz
Merge pull request #1 from EliasFleckenstein03/master
update
Diffstat (limited to 'src/itemstackmetadata.cpp')
-rw-r--r--src/itemstackmetadata.cpp17
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;
}