fix: simple hash iterate remove and clear
This commit is contained in:
parent
4ee28bfc2c
commit
451e621a94
|
@ -294,12 +294,11 @@ int32_t tSimpleHashIterateRemove(SSHashObj *pHashObj, const void *key, size_t ke
|
||||||
pPrev->next = pNode->next;
|
pPrev->next = pNode->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*pIter == (void*)GET_SHASH_NODE_DATA(pNode)) {
|
if (*pIter == (void *)GET_SHASH_NODE_DATA(pNode)) {
|
||||||
if (pNode->next) {
|
if (!pPrev) {
|
||||||
*pIter = GET_SHASH_NODE_DATA(pNode->next);
|
|
||||||
} else {
|
|
||||||
*pIter = NULL;
|
*pIter = NULL;
|
||||||
++(*iter);
|
} else {
|
||||||
|
*pIter = pPrev;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -331,6 +330,7 @@ void tSimpleHashClear(SSHashObj *pHashObj) {
|
||||||
FREE_HASH_NODE(pNode);
|
FREE_HASH_NODE(pNode);
|
||||||
pNode = pNext;
|
pNode = pNext;
|
||||||
}
|
}
|
||||||
|
pHashObj->hashList[i] = NULL;
|
||||||
}
|
}
|
||||||
atomic_store_64(&pHashObj->size, 0);
|
atomic_store_64(&pHashObj->size, 0);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue