hashindex.c: hashindex_resize check hashindex_set rc (contract)

This commit is contained in:
Marian Beermann 2016-07-09 01:34:59 +02:00
parent 5d2dbffbcd
commit 02bb79dcbb
No known key found for this signature in database
GPG Key ID: 9B8450B91D1362C1
1 changed files with 7 additions and 1 deletions

View File

@ -100,6 +100,8 @@ static int hashindex_delete(HashIndex *index, const void *key);
static void *hashindex_next_key(HashIndex *index, const void *key);
/* Private API */
static void hashindex_free(HashIndex *index);
static int
hashindex_index(HashIndex *index, const void *key)
{
@ -148,7 +150,11 @@ hashindex_resize(HashIndex *index, int capacity)
return 0;
}
while((key = hashindex_next_key(index, key))) {
hashindex_set(new, key, key + key_size);
if(!hashindex_set(new, key, key + key_size)) {
/* This can only happen if there's a bug in the code calculating capacity */
hashindex_free(new);
return 0;
}
}
free(index->buckets);
index->buckets = new->buckets;