diff options
author | Elias Fleckenstein <eliasfleckenstein@web.de> | 2021-03-09 10:15:03 +0100 |
---|---|---|
committer | Elias Fleckenstein <eliasfleckenstein@web.de> | 2021-03-09 10:15:03 +0100 |
commit | 88a1a5db9539bb2452e6048ac8f6738fb433e918 (patch) | |
tree | fdc6f6e7f149d6504c8a4409c55647c7f421eb7b /src/itemstackmetadata.cpp | |
parent | f7ec8186ffad5e2fa4f2cacf456f08ee07bb1061 (diff) | |
download | minetest-88a1a5db9539bb2452e6048ac8f6738fb433e918.tar.xz |
Unsent fields hash as ostringstream
Diffstat (limited to 'src/itemstackmetadata.cpp')
-rw-r--r-- | src/itemstackmetadata.cpp | 25 |
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()); } |