Extra debug checks in dictmerge
Former-commit-id: 839b2a151e6bad67017de87d7a637359f6ae63d1
This commit is contained in:
parent
afabc8a87e
commit
4ddc516382
14
src/dict.cpp
14
src/dict.cpp
@ -190,6 +190,7 @@ int dictMerge(dict *dst, dict *src)
|
|||||||
return DICT_OK;
|
return DICT_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t expectedSize = dictSize(src) + dictSize(dst);
|
||||||
if (dictSize(src) > dictSize(dst))
|
if (dictSize(src) > dictSize(dst))
|
||||||
{
|
{
|
||||||
std::swap(*dst, *src);
|
std::swap(*dst, *src);
|
||||||
@ -198,10 +199,18 @@ int dictMerge(dict *dst, dict *src)
|
|||||||
|
|
||||||
if (!dictIsRehashing(dst) && !dictIsRehashing(src))
|
if (!dictIsRehashing(dst) && !dictIsRehashing(src))
|
||||||
{
|
{
|
||||||
dst->ht[1] = dst->ht[0];
|
if (dst->ht[0].size >= src->ht[0].size)
|
||||||
dst->ht[0] = src->ht[0];
|
{
|
||||||
|
dst->ht[1] = dst->ht[0];
|
||||||
|
dst->ht[0] = src->ht[0];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dst->ht[1] = src->ht[0];
|
||||||
|
}
|
||||||
_dictReset(&src->ht[0]);
|
_dictReset(&src->ht[0]);
|
||||||
dst->rehashidx = 0;
|
dst->rehashidx = 0;
|
||||||
|
assert((dictSize(src)+dictSize(dst)) == expectedSize);
|
||||||
return DICT_OK;
|
return DICT_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -229,6 +238,7 @@ int dictMerge(dict *dst, dict *src)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
assert((dictSize(src)+dictSize(dst)) == expectedSize);
|
||||||
return DICT_OK;
|
return DICT_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user