X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=libcitadel%2Flib%2Fhash.c;h=26a20e53fbf1db772fcffab756a4f5f070eb4c28;hb=b6cb757f4ee700ba033f52d6d0c1191b1bdf5f16;hp=29f145894218e6b8b5d85713db4ea7bdbba6df27;hpb=e3514190c71a6732f50df4ddbe44222f5c9c8aa9;p=citadel.git diff --git a/libcitadel/lib/hash.c b/libcitadel/lib/hash.c index 29f145894..26a20e53f 100644 --- a/libcitadel/lib/hash.c +++ b/libcitadel/lib/hash.c @@ -209,11 +209,11 @@ void HDeleteHash(void *vHash) } /** - * @brief destroy a hashlist and all of its members + * @brief flush the members of a hashlist * Crashing? do 'print *FreeMe->LookupTable[i]' * @param Hash Hash to destroy. Is NULL'ed so you are shure its done. */ -void DeleteHash(HashList **Hash) +void DeleteHashContent(HashList **Hash) { int i; HashList *FreeMe; @@ -237,12 +237,34 @@ void DeleteHash(HashList **Hash) free(FreeMe->LookupTable[i]); } } - /** now, free our arrays... */ - free(FreeMe->LookupTable); - free(FreeMe->Members); + FreeMe->nMembersUsed = 0; + FreeMe->tainted = 0; + FreeMe->nLookupTableItems = 0; + memset(FreeMe->Members, 0, sizeof(Payload*) * FreeMe->MemberSize); + memset(FreeMe->LookupTable, 0, sizeof(HashKey*) * FreeMe->MemberSize); + /** did s.b. want an array of our keys? free them. */ if (FreeMe->MyKeys != NULL) free(FreeMe->MyKeys); +} + +/** + * @brief destroy a hashlist and all of its members + * Crashing? do 'print *FreeMe->LookupTable[i]' + * @param Hash Hash to destroy. Is NULL'ed so you are shure its done. + */ +void DeleteHash(HashList **Hash) +{ + HashList *FreeMe; + + FreeMe = *Hash; + if (FreeMe == NULL) + return; + DeleteHashContent(Hash); + /** now, free our arrays... */ + free(FreeMe->LookupTable); + free(FreeMe->Members); + /** buye bye cruel world. */ free (FreeMe); *Hash = NULL;