Extra debug checks in dictmerge

Former-commit-id: 839b2a151e6bad67017de87d7a637359f6ae63d1
This commit is contained in:
John Sully 2020-06-04 00:22:59 -04:00
parent afabc8a87e
commit 4ddc516382

View File

@ -190,6 +190,7 @@ int dictMerge(dict *dst, dict *src)
return DICT_OK;
}
size_t expectedSize = dictSize(src) + dictSize(dst);
if (dictSize(src) > dictSize(dst))
{
std::swap(*dst, *src);
@ -198,10 +199,18 @@ int dictMerge(dict *dst, dict *src)
if (!dictIsRehashing(dst) && !dictIsRehashing(src))
{
dst->ht[1] = dst->ht[0];
dst->ht[0] = src->ht[0];
if (dst->ht[0].size >= src->ht[0].size)
{
dst->ht[1] = dst->ht[0];
dst->ht[0] = src->ht[0];
}
else
{
dst->ht[1] = src->ht[0];
}
_dictReset(&src->ht[0]);
dst->rehashidx = 0;
assert((dictSize(src)+dictSize(dst)) == expectedSize);
return DICT_OK;
}
@ -229,6 +238,7 @@ int dictMerge(dict *dst, dict *src)
}
}
}
assert((dictSize(src)+dictSize(dst)) == expectedSize);
return DICT_OK;
}