From 5bdc79df9de9f5435628a227d7816a4f80217469 Mon Sep 17 00:00:00 2001 From: werkt Date: Wed, 5 Jan 2005 02:05:07 +0000 Subject: [PATCH] Un-botched ecore_hash_next SVN revision: 12753 --- legacy/ecore/src/lib/ecore/ecore_hash.c | 26 +++++++++---------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/legacy/ecore/src/lib/ecore/ecore_hash.c b/legacy/ecore/src/lib/ecore/ecore_hash.c index 3b2d51a24d..2aa2504e5d 100644 --- a/legacy/ecore/src/lib/ecore/ecore_hash.c +++ b/legacy/ecore/src/lib/ecore/ecore_hash.c @@ -214,7 +214,7 @@ Ecore_Hash_Node *ecore_hash_goto_first(Ecore_Hash *hash) ECORE_READ_LOCK(hash); if( hash->buckets[hash->index] ) - hash->current = ecore_list_goto_first( hash->buckets[hash->index] ) + ecore_list_goto_first( hash->buckets[hash->index] ); ECORE_READ_UNLOCK(hash); @@ -229,31 +229,23 @@ Ecore_Hash_Node *ecore_hash_goto_first(Ecore_Hash *hash) */ Ecore_Hash_Node *ecore_hash_next(Ecore_Hash *hash) { - Ecore_Hash_Node *node; + Ecore_Hash_Node *node = NULL; CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE); ECORE_READ_LOCK(hash); - node = hash->current; - if( hash->index < ecore_prime_table[hash->size] && hash->buckets[hash->index] ) { - if( hash->current ) - ecore_list_goto( hash->buckets[hash->index], hash->current ); - else - ecore_list_goto_first( hash->buckets[hash->index] ); - ecore_list_next( hash->buckets[hash->index] ); - hash->current = ecore_list_current( hash->buckets[hash->index] ); - if( !hash->current ) { + node = ecore_list_next( hash->buckets[hash->index] ); + if( !node ) { hash->index++; - - ECORE_READ_UNLOCK(hash); - ecore_hash_next(hash); - ECORE_READ_LOCK(hash); + while( hash->index < ecore_prime_table[hash->size] && + !hash->buckets[hash->index] ) + hash->index++; + if( hash->index < ecore_prime_table[hash->size] ) + node = ecore_list_goto_first( hash->buckets[hash->index] ); } - } else { - hash->current = NULL; } ECORE_READ_UNLOCK(hash);