From db983db6ff5b0ba8bf56ec63e70ad714a0e72a82 Mon Sep 17 00:00:00 2001 From: rbdpngn Date: Thu, 17 Nov 2005 06:39:14 +0000 Subject: [PATCH] Avoid potential recursion on the destruction of a collision chain. SVN revision: 18508 --- legacy/ecore/src/lib/ecore/ecore_hash.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/legacy/ecore/src/lib/ecore/ecore_hash.c b/legacy/ecore/src/lib/ecore/ecore_hash.c index 5209a0d124..bd1b7acfa3 100644 --- a/legacy/ecore/src/lib/ecore/ecore_hash.c +++ b/legacy/ecore/src/lib/ecore/ecore_hash.c @@ -182,9 +182,16 @@ void ecore_hash_destroy(Ecore_Hash *hash) while (i < ecore_prime_table[hash->size]) { if (hash->buckets[i]) { - _ecore_hash_bucket_destroy(hash->buckets[i], - hash->free_key, hash->free_value); + Ecore_Hash_Node *bucket; + + /* + * Remove the bucket list to avoid possible recursion + * on the free callbacks. + */ + bucket = hash->buckets[i]; hash->buckets[i] = NULL; + _ecore_hash_bucket_destroy(bucket, + hash->free_key, hash->free_value); } i++; }