From 5fcb0c9d430cf3ebb4c180ff38e805c6d18d5dea Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Fri, 14 Feb 2014 17:46:20 -0800 Subject: * hash.c (inhash): Simplify with gethash_c. --- ChangeLog | 4 ++++ hash.c | 15 +++++---------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index e6ba7b53..00111bf3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2014-02-14 Kaz Kylheku + + * hash.c (inhash): Simplify with gethash_c. + 2014-02-14 Kaz Kylheku Replacing acons_new_l and aconsq_new_l interfaces with ones diff --git a/hash.c b/hash.c index 354d250d..6a4143d6 100644 --- a/hash.c +++ b/hash.c @@ -544,23 +544,18 @@ val gethash(val hash, val key) val inhash(val hash, val key, val init) { - val found; + val cell; if (missingp(init)) { - gethash_f(hash, key, &found); + gethash_f(hash, key, &cell); } 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 cell = h->acons_new_c_fun(key, &new_p, pchain); - if (old != *pchain && ++h->count > 2 * h->modulus) - hash_grow(h); + val new_p; + cell = gethash_c(hash, key, &new_p); if (new_p) rplacd(cell, init); - found = h->assoc_fun(key, *pchain); } - return found; + return cell; } val gethash_f(val hash, val key, val *found) -- cgit v1.2.3