diff --git a/legacy/eina/src/include/eina_array.h b/legacy/eina/src/include/eina_array.h index 81c641c984..12c4fa3382 100644 --- a/legacy/eina/src/include/eina_array.h +++ b/legacy/eina/src/include/eina_array.h @@ -32,14 +32,17 @@ struct _Eina_Array /** An array of data */ unsigned int step; /**< How much must we grow the vector When it is full */ }; -EAPI Eina_Array *eina_array_new (unsigned int step); -EAPI void eina_array_setup (Eina_Array *array, unsigned int step); -EAPI void eina_array_free (Eina_Array *array); -EAPI void eina_array_append (Eina_Array *array, void *data); -EAPI void *eina_array_get (Eina_Array *array, unsigned int index); -EAPI void eina_array_clean (Eina_Array *array); -EAPI void eina_array_flush (Eina_Array *array); -EAPI void eina_array_remove (Eina_Array *array, Eina_Bool (*keep)(void *data, void *gdata), void *gdata); +EAPI int eina_array_init (void); +EAPI int eina_array_shutdown (void); + +EAPI Eina_Array *eina_array_new (unsigned int step); +EAPI void eina_array_setup (Eina_Array *array, unsigned int step); +EAPI void eina_array_free (Eina_Array *array); +EAPI void eina_array_append (Eina_Array *array, void *data); +EAPI void *eina_array_get (Eina_Array *array, unsigned int index); +EAPI void eina_array_clean (Eina_Array *array); +EAPI void eina_array_flush (Eina_Array *array); +EAPI void eina_array_remove (Eina_Array *array, Eina_Bool (*keep)(void *data, void *gdata), void *gdata); #define EINA_ARRAY_ITER_NEXT(array, index, item) for ((index) = 0, (item) = ((array) && (array)->count > 0) ? _eina_array_get((array), (index)) : NULL; (index) < (array)->count; ++(index), (item) = _eina_array_get((array), (index))) diff --git a/legacy/eina/src/lib/eina_array.c b/legacy/eina/src/lib/eina_array.c index 324fc1ba60..2cdaf06100 100644 --- a/legacy/eina/src/lib/eina_array.c +++ b/legacy/eina/src/lib/eina_array.c @@ -27,9 +27,22 @@ #include #include +#include "eina_error.h" #include "eina_array.h" #include "eina_inline_array.x" +EAPI int +eina_array_init(void) +{ + return eina_error_init(); +} + +EAPI int +eina_array_shutdown(void) +{ + return eina_error_shutdown(); +} + EAPI void eina_array_append(Eina_Array *array, void *data) { @@ -69,8 +82,12 @@ eina_array_new(unsigned int step) { Eina_Array *array; + eina_error_set(0); array = malloc(sizeof (Eina_Array)); - if (!array) return NULL; + if (!array) { + eina_error_set(EINA_ERROR_OUT_OF_MEMORY); + return NULL; + } array->data = NULL; array->total = 0; @@ -132,8 +149,12 @@ eina_array_remove(Eina_Array *array, Eina_Bool (*keep)(void *data, void *gdata), return ; } + eina_error_set(0); tmp = malloc(sizeof (void*) * array->total); - if (!tmp) return ; + if (!tmp) { + eina_error_set(EINA_ERROR_OUT_OF_MEMORY); + return ; + } memcpy(tmp, array->data, limit * sizeof(void*)); total = limit; diff --git a/legacy/eina/src/lib/eina_hash.c b/legacy/eina/src/lib/eina_hash.c index bc532d3cd0..7c1c655ca6 100644 --- a/legacy/eina/src/lib/eina_hash.c +++ b/legacy/eina/src/lib/eina_hash.c @@ -27,6 +27,7 @@ #include "eina_inlist.h" #include "eina_error.h" #include "eina_private.h" + /*============================================================================* * Local * *============================================================================*/ @@ -51,7 +52,6 @@ struct _Eina_Hash_El }; static int _eina_hash_init_count = 0; -static int EINA_HASH_ERROR_OUT_OF_MEMORY = 0; static inline Eina_Hash_El * _eina_hash_find_by_hash(const Eina_Hash *hash, const char *key, int key_length, int key_hash) @@ -126,10 +126,7 @@ eina_hash_init(void) _eina_hash_init_count++; if (_eina_hash_init_count == 1) - { - eina_error_init(); - EINA_HASH_ERROR_OUT_OF_MEMORY = eina_error_register("Eina_Hash out of memory"); - } + eina_error_init(); return _eina_hash_init_count; } @@ -168,7 +165,7 @@ eina_hash_new(Eina_Key_Length key_length_cb, return new; on_error: - eina_error_set(EINA_HASH_ERROR_OUT_OF_MEMORY); + eina_error_set(EINA_ERROR_OUT_OF_MEMORY); return NULL; } @@ -242,7 +239,7 @@ eina_hash_add_by_hash(Eina_Hash *hash, return EINA_TRUE; on_error: - eina_error_set(EINA_HASH_ERROR_OUT_OF_MEMORY); + eina_error_set(EINA_ERROR_OUT_OF_MEMORY); return EINA_FALSE; } @@ -300,7 +297,7 @@ eina_hash_direct_add_by_hash(Eina_Hash *hash, return EINA_TRUE; on_error: - eina_error_set(EINA_HASH_ERROR_OUT_OF_MEMORY); + eina_error_set(EINA_ERROR_OUT_OF_MEMORY); return EINA_FALSE; } diff --git a/legacy/eina/src/tests/eina_test_array.c b/legacy/eina/src/tests/eina_test_array.c index 2e77311e6c..eb9185ef6f 100644 --- a/legacy/eina/src/tests/eina_test_array.c +++ b/legacy/eina/src/tests/eina_test_array.c @@ -27,6 +27,8 @@ START_TEST(eina_array_simple) char *tmp; unsigned int i; + eina_array_init(); + ea = eina_array_new(11); fail_if(!ea); @@ -53,6 +55,8 @@ START_TEST(eina_array_simple) eina_array_clean(ea); eina_array_flush(ea); eina_array_free(ea); + + eina_array_shutdown(); } END_TEST @@ -62,6 +66,8 @@ START_TEST(eina_array_static) char *tmp; unsigned int i; + eina_array_init(); + eina_array_setup(&sea, 10); for (i = 0; i < 200; ++i) @@ -86,6 +92,8 @@ START_TEST(eina_array_static) eina_array_clean(&sea); eina_array_flush(&sea); + + eina_array_shutdown(); } END_TEST @@ -107,6 +115,8 @@ START_TEST(eina_array_remove_stuff) int *tmp; unsigned int i; + eina_array_init(); + ea = eina_array_new(64); fail_if(!ea); @@ -153,6 +163,8 @@ START_TEST(eina_array_remove_stuff) fail_if(eina_array_count(ea) != 0); eina_array_free(ea); + + eina_array_shutdown(); } END_TEST