X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/mLib/blobdiff_plain/0ae5e7b3fd62e0251d21f3abbc187f4c7585f85f..6f5e97aca6af373a074c83eccd4d4f21b661d307:/assoc.c diff --git a/assoc.c b/assoc.c index 26fe2c9..6779bc8 100644 --- a/assoc.c +++ b/assoc.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: assoc.c,v 1.1 2001/01/20 11:50:58 mdw Exp $ + * $Id: assoc.c,v 1.2 2001/01/21 19:04:59 mdw Exp $ * * Assocation tables * @@ -30,6 +30,9 @@ /*----- Revision history --------------------------------------------------* * * $Log: assoc.c,v $ + * Revision 1.2 2001/01/21 19:04:59 mdw + * Fix bugs. + * * Revision 1.1 2001/01/20 11:50:58 mdw * Hash tables indexed by atoms, to avoid expense of hashing keys on each * lookup, and to reduce storage used by key texts. @@ -77,6 +80,8 @@ void assoc_destroy(assoc_table *t) for (;;) { hash_base *p; HASH_NEXT(&i, p); + if (!p) + break; x_free(t->t.a, p); } hash_destroy(&t->t); @@ -127,6 +132,7 @@ void *assoc_find(assoc_table *t, atom *a, size_t sz, unsigned *f) /* --- Make a new assoication --- */ q = x_alloc(t->t.a, sz); + q->a = a; q->b.next = *bin; q->b.hash = ATOM_HASH(a); *bin = &q->b;