[td-225] fix bug in hash
This commit is contained in:
parent
7bb42b5f57
commit
4222cfcda6
|
@ -376,8 +376,9 @@ int32_t taosHashRemoveWithData(SHashObj *pHashObj, const void *key, size_t keyLe
|
||||||
|
|
||||||
// remove it
|
// remove it
|
||||||
if ((pNode->keyLen == keyLen) && (memcmp(pNode->key, key, keyLen) == 0)) {
|
if ((pNode->keyLen == keyLen) && (memcmp(pNode->key, key, keyLen) == 0)) {
|
||||||
pe->next = pNode->next;
|
pe->num -= 1;
|
||||||
pRes = pNode;
|
pRes = pNode;
|
||||||
|
pe->next = pNode->next;
|
||||||
} else {
|
} else {
|
||||||
while (pNode->next != NULL) {
|
while (pNode->next != NULL) {
|
||||||
if (((pNode->next)->keyLen == keyLen) && (memcmp((pNode->next)->key, key, keyLen) == 0)) {
|
if (((pNode->next)->keyLen == keyLen) && (memcmp((pNode->next)->key, key, keyLen) == 0)) {
|
||||||
|
@ -390,6 +391,7 @@ int32_t taosHashRemoveWithData(SHashObj *pHashObj, const void *key, size_t keyLe
|
||||||
|
|
||||||
|
|
||||||
if (pNode->next != NULL) {
|
if (pNode->next != NULL) {
|
||||||
|
pe->num -= 1;
|
||||||
pRes = pNode->next;
|
pRes = pNode->next;
|
||||||
pNode->next = pNode->next->next;
|
pNode->next = pNode->next->next;
|
||||||
}
|
}
|
||||||
|
@ -406,7 +408,6 @@ int32_t taosHashRemoveWithData(SHashObj *pHashObj, const void *key, size_t keyLe
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pRes != NULL) {
|
if (pRes != NULL) {
|
||||||
pe->num -= 1;
|
|
||||||
atomic_sub_fetch_64(&pHashObj->size, 1);
|
atomic_sub_fetch_64(&pHashObj->size, 1);
|
||||||
FREE_HASH_NODE(pHashObj, pRes);
|
FREE_HASH_NODE(pHashObj, pRes);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue