Fix inconsistent Node::size when removing a key with unassigned node (#327) (#449)

This commit is contained in:
butataatawa
2016-12-06 15:40:00 +01:00
committed by Jesse Beder
parent e3492bb3fa
commit 147d909fe6
2 changed files with 15 additions and 0 deletions

View File

@@ -132,6 +132,14 @@ inline bool node_data::remove(const Key& key, shared_memory_holder pMemory) {
if (m_type != NodeType::Map)
return false;
kv_pairs::iterator it = m_undefinedPairs.begin();
while (it != m_undefinedPairs.end()) {
kv_pairs::iterator jt = std::next(it);
if (it->first->equals(key, pMemory))
m_undefinedPairs.erase(it);
it = jt;
}
for (node_map::iterator it = m_map.begin(); it != m_map.end(); ++it) {
if (it->first->equals(key, pMemory)) {
m_map.erase(it);