X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Fhashtable.h;h=c2c3c42d0869d73052cdc299b7867f5dfb6bbf9e;hb=aac1c6571404bfbf5654a671d66c8ff043f9c9eb;hp=ef86ecef0aa63c6caeb1250728b5465446dac9ef;hpb=68d3f768e4f4876b3b2de9cc8a692819de9d3d86;p=libucw.git diff --git a/lib/hashtable.h b/lib/hashtable.h index ef86ecef..c2c3c42d 100644 --- a/lib/hashtable.h +++ b/lib/hashtable.h @@ -3,6 +3,9 @@ * * (c) 2002 Martin Mares * (c) 2002 Robert Spalek + * + * This software may be freely distributed and used according to the terms + * of the GNU Lesser General Public License. */ /* @@ -44,8 +47,8 @@ * HASH_WANT_CLEANUP cleanup() -- deallocate the hash table. * HASH_WANT_FIND node *find(key) -- find first node with the specified * key, return NULL if no such node exists. - * HASH_WANT_FIND_NEXT node *find(key, node *start) -- find next node with - * the specified key, return NULL if no such node exists. + * HASH_WANT_FIND_NEXT node *find(node *start) -- find next node with the + * specified key, return NULL if no such node exists. * HASH_WANT_NEW node *new(key) -- create new node with given key. * Doesn't check whether it already exists. * HASH_WANT_LOOKUP node *lookup(key) -- find node with given key, @@ -385,20 +388,20 @@ static P(node) * P(find) (HASH_KEY_DECL) #endif #ifdef HASH_WANT_FIND_NEXT -static P(node) * P(find_next) (HASH_KEY_DECL, P(node) *start) +static P(node) * P(find_next) (P(node) *start) { #ifndef HASH_CONSERVE_SPACE - uns h0 = P(hash) (HASH_KEY( )); + uns h0 = P(hash) (HASH_KEY(start->)); #endif P(bucket) *b = SKIP_BACK(P(bucket), n, start); - for (; b; b=b->next) + for (b=b->next; b; b=b->next) { if ( #ifndef HASH_CONSERVE_SPACE b->hash == h0 && #endif - P(eq)(HASH_KEY( ), HASH_KEY(b->n.))) + P(eq)(HASH_KEY(start->), HASH_KEY(b->n.))) return &b->n; } return NULL;