aboutsummaryrefslogtreecommitdiff
path: root/src/itemstackmetadata.cpp
diff options
context:
space:
mode:
authorElias Fleckenstein <eliasfleckenstein@web.de>2021-03-09 10:15:03 +0100
committerElias Fleckenstein <eliasfleckenstein@web.de>2021-03-09 10:15:03 +0100
commit88a1a5db9539bb2452e6048ac8f6738fb433e918 (patch)
treefdc6f6e7f149d6504c8a4409c55647c7f421eb7b /src/itemstackmetadata.cpp
parentf7ec8186ffad5e2fa4f2cacf456f08ee07bb1061 (diff)
downloadminetest-88a1a5db9539bb2452e6048ac8f6738fb433e918.tar.xz
Unsent fields hash as ostringstream
Diffstat (limited to 'src/itemstackmetadata.cpp')
-rw-r--r--src/itemstackmetadata.cpp25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/itemstackmetadata.cpp b/src/itemstackmetadata.cpp
index 97d639f65..048dd9eec 100644
--- a/src/itemstackmetadata.cpp
+++ b/src/itemstackmetadata.cpp
@@ -62,26 +62,25 @@ bool ItemStackMetadata::setString(const std::string &name, const std::string &va
void ItemStackMetadata::serialize(std::ostream &os, InventoryOptimizationOption opt) const
{
std::ostringstream os2;
+ std::ostringstream os_hash;
os2 << DESERIALIZE_START;
- std::string unsent_fields;
bool sparse_meta = opt & INV_OO_META_SPARSE;
for (const auto &stringvar : m_stringvars) {
- if (sparse_meta
- && stringvar.first != TOOLCAP_KEY
- && stringvar.first != "description"
- && stringvar.first != "color"
- && stringvar.first != "short_description"
- && stringvar.first != "palette_index") {
- unsent_fields += stringvar.first + "=" + stringvar.second;
- continue;
- }
+ bool silent = sparse_meta
+ && stringvar.first != TOOLCAP_KEY
+ && stringvar.first != "description"
+ && stringvar.first != "color"
+ && stringvar.first != "short_description"
+ && stringvar.first != "palette_index";
if (!stringvar.first.empty() || !stringvar.second.empty())
- os2 << stringvar.first << DESERIALIZE_KV_DELIM
+ (silent ? os_hash : os2) << stringvar.first << DESERIALIZE_KV_DELIM
<< stringvar.second << DESERIALIZE_PAIR_DELIM;
}
- if (! unsent_fields.empty())
+ std::string hash_str = os_hash.str();
+ if (! hash_str.empty()) {
os2 << "hash" << DESERIALIZE_KV_DELIM
- << murmur_hash_64_ua(unsent_fields.data(), unsent_fields.length(), 0xdeadbeef) << DESERIALIZE_PAIR_DELIM;
+ << murmur_hash_64_ua(hash_str.data(), hash_str.length(), 0xdeadbeef) << DESERIALIZE_PAIR_DELIM;
+ }
os << serializeJsonStringIfNeeded(os2.str());
}