summaryrefslogtreecommitdiffstats
path: root/hash.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2014-02-14 16:53:44 -0800
committerKaz Kylheku <kaz@kylheku.com>2014-02-14 16:53:44 -0800
commita4b872687408e7624ccb500fbce8467ae3f821e6 (patch)
tree1a3ec45833adda6b28f99131d6e1e2a67c43dbb6 /hash.c
parent9273e90571ff155477aaadd55040fe75e4a8d9e2 (diff)
downloadtxr-a4b872687408e7624ccb500fbce8467ae3f821e6.tar.gz
txr-a4b872687408e7624ccb500fbce8467ae3f821e6.tar.bz2
txr-a4b872687408e7624ccb500fbce8467ae3f821e6.zip
* hash.c (inhash): Simplify code with gethash_f.
Diffstat (limited to 'hash.c')
-rw-r--r--hash.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/hash.c b/hash.c
index 1ee0a248..c0c66114 100644
--- a/hash.c
+++ b/hash.c
@@ -544,13 +544,12 @@ val gethash(val hash, val key)
val inhash(val hash, val key, val init)
{
- struct hash *h = (struct hash *) cobj_handle(hash, hash_s);
val found;
if (missingp(init)) {
- val chain = vecref(h->table, num_fast(h->hash_fun(key) % h->modulus));
- found = h->assoc_fun(key, chain);
+ gethash_f(hash, key, &found);
} else {
+ struct hash *h = (struct hash *) cobj_handle(hash, hash_s);
val *pchain = vecref_l(h->table, num_fast(h->hash_fun(key) % h->modulus));
val old = *pchain, new_p;
val *place = h->acons_new_l_fun(key, &new_p, pchain);