diff --git a/code/components/citizen-resources-core/src/StateBagComponent.cpp b/code/components/citizen-resources-core/src/StateBagComponent.cpp index 5abef6d46f..2788478805 100644 --- a/code/components/citizen-resources-core/src/StateBagComponent.cpp +++ b/code/components/citizen-resources-core/src/StateBagComponent.cpp @@ -245,12 +245,17 @@ void StateBagImpl::SetKey(int source, std::string_view key, std::string_view dat continuation(key, data); } +// https://github.com/msgpack/msgpack/blob/master/spec.md#formats +constexpr char MsgPackNil = static_cast(0xc0); void StateBagImpl::SetKeyInternal(int source, std::string_view key, std::string_view data, bool replicated) { { std::unique_lock _(m_dataMutex); - - if (auto it = m_data.find(key); it != m_data.end()) + if (data[0] == MsgPackNil) + { + m_data.erase(std::string { key }); + } + else if (auto it = m_data.find(key); it != m_data.end()) { if (data != it->second) {