From 172b0612aae0b8ab9a8acdd6c1ddbcfbc4cecd6d Mon Sep 17 00:00:00 2001 From: rbdpngn Date: Fri, 2 Dec 2005 15:35:50 +0000 Subject: [PATCH] Catch a potential segfault if a hash is created and never used. SVN revision: 18785 --- legacy/ecore/src/lib/ecore/ecore_hash.c | 31 ++++++++++++++----------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/legacy/ecore/src/lib/ecore/ecore_hash.c b/legacy/ecore/src/lib/ecore/ecore_hash.c index da00647070..fd4c8d34a3 100644 --- a/legacy/ecore/src/lib/ecore/ecore_hash.c +++ b/legacy/ecore/src/lib/ecore/ecore_hash.c @@ -180,23 +180,26 @@ void ecore_hash_destroy(Ecore_Hash *hash) ECORE_WRITE_LOCK(hash); - while (i < ecore_prime_table[hash->size]) { - if (hash->buckets[i]) { - Ecore_Hash_Node *bucket; + if (hash->buckets) { + while (i < ecore_prime_table[hash->size]) { + if (hash->buckets[i]) { + 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); + /* + * 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++; } - i++; - } - FREE(hash->buckets); + FREE(hash->buckets); + } ECORE_WRITE_UNLOCK(hash); ECORE_DESTROY_LOCKS(hash);