X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=libcitadel%2Flib%2Fhash.c;fp=libcitadel%2Flib%2Fhash.c;h=e8cd6b29c19932f9cf19e697fd50e37e0b290626;hb=1956b32b1653ba3fe39876aee793ed9dbf488222;hp=e5093b7e4b9d43d394164bf59e810d1cf4a38d76;hpb=1acf8374638d36926c5ecd37eb15bd01811720ba;p=citadel.git diff --git a/libcitadel/lib/hash.c b/libcitadel/lib/hash.c index e5093b7e4..e8cd6b29c 100644 --- a/libcitadel/lib/hash.c +++ b/libcitadel/lib/hash.c @@ -203,6 +203,30 @@ int dbg_PrintHash(HashList *Hash, PrintHashContent First, PrintHashContent Secon } +int TestValidateHash(HashList *TestHash) +{ + long i; + + if (TestHash->nMembersUsed != TestHash->nLookupTableItems) + return 1; + + if (TestHash->nMembersUsed > TestHash->MemberSize) + return 2; + + for (i=0; i < TestHash->nMembersUsed; i++) + { + + if (TestHash->LookupTable[i]->Position > TestHash->nMembersUsed) + return 3; + + if (TestHash->Members[TestHash->LookupTable[i]->Position] == NULL) + return 4; + if (TestHash->Members[TestHash->LookupTable[i]->Position]->Data == NULL) + return 5; + } + return 0; +} + /** * @ingroup HashListAccess * @brief instanciate a new hashlist