On Thu, 12 Aug 2010, Enlightenment SVN wrote:
> Log:
> more variable renames, null check alloc, malloc+memset0 -> calloc, rwlocks
> in structs
>
> Author: discomfitor
> Date: 2010-08-12 23:58:43 -0700 (Thu, 12 Aug 2010)
> New Revision: 51066
>
> Modified:
> trunk/eina/src/lib/eina_hash.c
>
> Modified: trunk/eina/src/lib/eina_hash.c
> ===================================================================
> --- trunk/eina/src/lib/eina_hash.c 2010-08-13 06:36:33 UTC (rev 51065)
> +++ trunk/eina/src/lib/eina_hash.c 2010-08-13 06:58:43 UTC (rev 51066)
> @@ -86,6 +86,11 @@
>
> int population;
>
> +#ifdef EINA_RWLOCKS_ENABLED
please use the other macro for that check (same below)
Vincent
> + pthread_rwlock_t lock;
> + Eina_Bool threadsafe:1;
> +#endif
> +
> EINA_MAGIC
> };
>
> @@ -102,6 +107,10 @@
> EINA_RBTREE;
> Eina_Hash_Tuple tuple;
> Eina_Bool begin : 1;
> +#ifdef EINA_RWLOCKS_ENABLED
> + pthread_rwlock_t lock;
> + int threadcount;
> +#endif
> };
>
> struct _Eina_Hash_Foreach_Data
> @@ -210,7 +219,7 @@
> int key_hash,
> const void *data)
> {
> - Eina_Hash_Element *hash_element = NULL;
> + Eina_Hash_Element *new_hash_element = NULL;
> Eina_Hash_Head *hash_head;
> Eina_Error error = 0;
> int hash_num;
> @@ -227,18 +236,17 @@
>
> if (!hash->buckets)
> {
> - hash->buckets = malloc(sizeof (Eina_Rbtree *) * hash->size);
> - memset(hash->buckets, 0, sizeof (Eina_Rbtree *) * hash->size);
> + hash->buckets = calloc(sizeof (Eina_Rbtree *), hash->size);
> + if (!hash->buckets) goto on_error;
>
> hash_head = NULL;
> }
> else
> /* Look up for head node. */
> hash_head = (Eina_Hash_Head
> *)eina_rbtree_inline_lookup(hash->buckets[hash_num],
> - &key_hash, 0,
> -
> EINA_RBTREE_CMP_KEY_CB(
> -
> _eina_hash_hash_rbtree_cmp_hash),
> - NULL);
> + &key_hash, 0,
> +
> EINA_RBTREE_CMP_KEY_CB(_eina_hash_hash_rbtree_cmp_hash),
> + NULL);
>
> if (!hash_head)
> {
> @@ -255,36 +263,36 @@
> EINA_RBTREE_CMP_NODE_CB(
> _eina_hash_hash_rbtree_cmp_node),
> NULL);
>
> - hash_element = (Eina_Hash_Element *)(hash_head + 1);
> - hash_element->begin = EINA_TRUE;
> + new_hash_element = (Eina_Hash_Element *)(hash_head + 1);
> + new_hash_element->begin = EINA_TRUE;
> }
>
> - if (!hash_element)
> + if (!new_hash_element)
> {
> /*
> Alloc every needed things
> (No more lookup as we expect to support more than one item for one
> key).
> */
> - hash_element = malloc(sizeof (Eina_Hash_Element) + alloc_length);
> - if (!hash_element)
> + new_hash_element = malloc(sizeof (Eina_Hash_Element) + alloc_length);
> + if (!new_hash_element)
> goto on_error;
>
> - hash_element->begin = EINA_FALSE;
> + new_hash_element->begin = EINA_FALSE;
> }
>
> /* Setup the element */
> - hash_element->tuple.key_length = key_length;
> - hash_element->tuple.data = (void *)data;
> + new_hash_element->tuple.key_length = key_length;
> + new_hash_element->tuple.data = (void *)data;
> if (alloc_length > 0)
> {
> - hash_element->tuple.key = (char *)(hash_element + 1);
> - memcpy((char *)hash_element->tuple.key, key, alloc_length);
> + new_hash_element->tuple.key = (char *)(new_hash_element + 1);
> + memcpy((char *)new_hash_element->tuple.key, key, alloc_length);
> }
> else
> - hash_element->tuple.key = key;
> + new_hash_element->tuple.key = key;
>
> /* add the new element to the hash. */
> - hash_head->head = eina_rbtree_inline_insert(hash_head->head,
> EINA_RBTREE_GET(hash_element),
> + hash_head->head = eina_rbtree_inline_insert(hash_head->head,
> EINA_RBTREE_GET(new_hash_element),
> EINA_RBTREE_CMP_NODE_CB(
> _eina_hash_key_rbtree_cmp_node),
> (const void *)hash->key_cmp_cb);
>
>
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by
>
> Make an app they can't live without
> Enter the BlackBerry Developer Challenge
> http://p.sf.net/sfu/RIM-dev2dev
> _______________________________________________
> enlightenment-svn mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-svn
>
>
------------------------------------------------------------------------------
This SF.net email is sponsored by
Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel