diff --git a/legacy/evas/src/lib/data/evas_hash.c b/legacy/evas/src/lib/data/evas_hash.c index aebc9c1317..ad26cf32f0 100644 --- a/legacy/evas/src/lib/data/evas_hash.c +++ b/legacy/evas/src/lib/data/evas_hash.c @@ -20,6 +20,7 @@ evas_hash_gen(const char *key) return (int)hash_num; } +/* FIXME: document this file next */ Evas_Hash * evas_hash_add(Evas_Hash *hash, const char *key, void *data) { @@ -51,7 +52,7 @@ evas_hash_add(Evas_Hash *hash, const char *key, void *data) el->key = strdup(key); if (!el->key) { - free(key); + free(el); _evas_hash_alloc_error = 1; return hash; } @@ -67,8 +68,8 @@ evas_hash_add(Evas_Hash *hash, const char *key, void *data) if (evas_list_alloc_error()) { _evas_hash_alloc_error = 1; - free(el->key); - free(key); + if (el->key) free(el->key); + free(el); return hash; } hash->population++; @@ -123,6 +124,7 @@ evas_hash_find(Evas_Hash *hash, const char *key) { if (l != hash->buckets[hash_num]) { + /* FIXME: move to front of list without alloc */ hash->buckets[hash_num] = evas_object_list_remove(hash->buckets[hash_num], el); hash->buckets[hash_num] = evas_object_list_prepend(hash->buckets[hash_num], el); if (evas_list_alloc_error()) @@ -183,7 +185,7 @@ evas_hash_foreach(Evas_Hash *hash, int (*func) (Evas_Hash *hash, const char *key next_l = l->next; el = (Evas_Hash_El *)l; - func(hash, el->key, el->data, fdata); + if (!func(hash, el->key, el->data, fdata)) return; l = next_l; } } diff --git a/legacy/evas/src/lib/engines/gl_x11/evas_engine.c b/legacy/evas/src/lib/engines/gl_x11/evas_engine.c index 699b5bad13..57b6397336 100644 --- a/legacy/evas/src/lib/engines/gl_x11/evas_engine.c +++ b/legacy/evas/src/lib/engines/gl_x11/evas_engine.c @@ -226,7 +226,7 @@ evas_engine_gl_x11_output_setup(int w, int h, int rot, Display *disp, Drawable d draw_init(); tilebuf_init(); - x_gl_x11_init(); + evas_gl_x11_init(); return re; } diff --git a/legacy/evas/src/lib/engines/gl_x11/evas_engine.h b/legacy/evas/src/lib/engines/gl_x11/evas_engine.h index a8992558c9..b333a415bd 100644 --- a/legacy/evas/src/lib/engines/gl_x11/evas_engine.h +++ b/legacy/evas/src/lib/engines/gl_x11/evas_engine.h @@ -8,6 +8,6 @@ /* data structs go here for engine internals */ /****/ -void x_gl_x11_init (void); +void evas_gl_x11_init (void); #endif diff --git a/legacy/evas/src/lib/engines/gl_x11/evas_x_main.c b/legacy/evas/src/lib/engines/gl_x11/evas_x_main.c index 105c347279..45e1670029 100644 --- a/legacy/evas/src/lib/engines/gl_x11/evas_x_main.c +++ b/legacy/evas/src/lib/engines/gl_x11/evas_x_main.c @@ -5,6 +5,6 @@ #include void -x_gl_x11_init(void) +evas_gl_x11_init(void) { } diff --git a/legacy/evas/src/lib/include/evas_common.h b/legacy/evas/src/lib/include/evas_common.h index cfd63c4fa5..83aa1ff95a 100644 --- a/legacy/evas/src/lib/include/evas_common.h +++ b/legacy/evas/src/lib/include/evas_common.h @@ -532,19 +532,26 @@ Evas_List *evas_list_prepend_relative (Evas_List *list, void *data, void *rela Evas_List *evas_list_remove (Evas_List *list, void *data); Evas_List *evas_list_remove_list (Evas_List *list, Evas_List *remove_list); void *evas_list_find (Evas_List *list, void *data); +Evas_List *evas_list_find_list (Evas_List *list, void *data); Evas_List *evas_list_free (Evas_List *list); Evas_List *evas_list_last (Evas_List *list); +Evas_List *evas_list_next (Evas_List *list); +Evas_List *evas_list_prev (Evas_List *list); +void *evas_list_data (Evas_List *list); int evas_list_count (Evas_List *list); void *evas_list_nth (Evas_List *list, int n); +Evas_List *evas_list_nth_list (Evas_List *list, int n); Evas_List *evas_list_reverse (Evas_List *list); - +int evas_list_alloc_error (void); + Evas_Hash *evas_hash_add (Evas_Hash *hash, const char *key, void *data); Evas_Hash *evas_hash_del (Evas_Hash *hash, const char *key, void *data); void *evas_hash_find (Evas_Hash *hash, const char *key); int evas_hash_size (Evas_Hash *hash); void evas_hash_free (Evas_Hash *hash); void evas_hash_foreach (Evas_Hash *hash, int (*func) (Evas_Hash *hash, const char *key, void *data, void *fdata), void *fdata); - +int evas_hash_alloc_error (void); + void *evas_object_list_append (void *in_list, void *in_item); void *evas_object_list_prepend (void *in_list, void *in_item); void *evas_object_list_append_relative (void *in_list, void *in_item, void *in_relative);