No more cycles in table generation! (Merge branch 'LL' of https://github.com/pesco/hammer)

This commit is contained in:
Meredith L. Patterson 2013-05-24 14:13:54 -07:00
commit b6d9c0c0c4
4 changed files with 29 additions and 37 deletions

View file

@ -201,7 +201,7 @@ void h_hashtable_update(HHashTable *dst, const HHashTable *src) {
}
}
void h_hashtable_merge(void *(*combine)(void *v1, void *v2),
void h_hashtable_merge(void *(*combine)(void *v1, const void *v2),
HHashTable *dst, const HHashTable *src) {
size_t i;
HHashTableEntry *hte;
@ -209,13 +209,9 @@ void h_hashtable_merge(void *(*combine)(void *v1, void *v2),
for(hte = &src->contents[i]; hte; hte = hte->next) {
if(hte->key == NULL)
continue;
void *oldvalue = h_hashtable_get(dst, hte->key);
void *newvalue;
if(oldvalue)
newvalue = combine(oldvalue, hte->value);
else
newvalue = hte->value;
h_hashtable_put(dst, hte->key, newvalue);
void *dstvalue = h_hashtable_get(dst, hte->key);
void *srcvalue = hte->value;
h_hashtable_put(dst, hte->key, combine(dstvalue, srcvalue));
}
}
}