Use the common out of memory error.

SVN revision: 35379
This commit is contained in:
Cedric BAIL 2008-08-07 13:11:13 +00:00
parent f193096aa8
commit cf5bc3129d
4 changed files with 51 additions and 18 deletions

View File

@ -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 */ unsigned int step; /**< How much must we grow the vector When it is full */
}; };
EAPI Eina_Array *eina_array_new (unsigned int step); EAPI int eina_array_init (void);
EAPI void eina_array_setup (Eina_Array *array, unsigned int step); EAPI int eina_array_shutdown (void);
EAPI void eina_array_free (Eina_Array *array);
EAPI void eina_array_append (Eina_Array *array, void *data); EAPI Eina_Array *eina_array_new (unsigned int step);
EAPI void *eina_array_get (Eina_Array *array, unsigned int index); EAPI void eina_array_setup (Eina_Array *array, unsigned int step);
EAPI void eina_array_clean (Eina_Array *array); EAPI void eina_array_free (Eina_Array *array);
EAPI void eina_array_flush (Eina_Array *array); EAPI void eina_array_append (Eina_Array *array, void *data);
EAPI void eina_array_remove (Eina_Array *array, Eina_Bool (*keep)(void *data, void *gdata), void *gdata); 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))) #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)))

View File

@ -27,9 +27,22 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "eina_error.h"
#include "eina_array.h" #include "eina_array.h"
#include "eina_inline_array.x" #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 EAPI void
eina_array_append(Eina_Array *array, void *data) eina_array_append(Eina_Array *array, void *data)
{ {
@ -69,8 +82,12 @@ eina_array_new(unsigned int step)
{ {
Eina_Array *array; Eina_Array *array;
eina_error_set(0);
array = malloc(sizeof (Eina_Array)); 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->data = NULL;
array->total = 0; array->total = 0;
@ -132,8 +149,12 @@ eina_array_remove(Eina_Array *array, Eina_Bool (*keep)(void *data, void *gdata),
return ; return ;
} }
eina_error_set(0);
tmp = malloc(sizeof (void*) * array->total); 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*)); memcpy(tmp, array->data, limit * sizeof(void*));
total = limit; total = limit;

View File

@ -27,6 +27,7 @@
#include "eina_inlist.h" #include "eina_inlist.h"
#include "eina_error.h" #include "eina_error.h"
#include "eina_private.h" #include "eina_private.h"
/*============================================================================* /*============================================================================*
* Local * * Local *
*============================================================================*/ *============================================================================*/
@ -51,7 +52,6 @@ struct _Eina_Hash_El
}; };
static int _eina_hash_init_count = 0; static int _eina_hash_init_count = 0;
static int EINA_HASH_ERROR_OUT_OF_MEMORY = 0;
static inline Eina_Hash_El * static inline Eina_Hash_El *
_eina_hash_find_by_hash(const Eina_Hash *hash, const char *key, int key_length, int key_hash) _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++; _eina_hash_init_count++;
if (_eina_hash_init_count == 1) if (_eina_hash_init_count == 1)
{ eina_error_init();
eina_error_init();
EINA_HASH_ERROR_OUT_OF_MEMORY = eina_error_register("Eina_Hash out of memory");
}
return _eina_hash_init_count; return _eina_hash_init_count;
} }
@ -168,7 +165,7 @@ eina_hash_new(Eina_Key_Length key_length_cb,
return new; return new;
on_error: on_error:
eina_error_set(EINA_HASH_ERROR_OUT_OF_MEMORY); eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
return NULL; return NULL;
} }
@ -242,7 +239,7 @@ eina_hash_add_by_hash(Eina_Hash *hash,
return EINA_TRUE; return EINA_TRUE;
on_error: on_error:
eina_error_set(EINA_HASH_ERROR_OUT_OF_MEMORY); eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
return EINA_FALSE; return EINA_FALSE;
} }
@ -300,7 +297,7 @@ eina_hash_direct_add_by_hash(Eina_Hash *hash,
return EINA_TRUE; return EINA_TRUE;
on_error: on_error:
eina_error_set(EINA_HASH_ERROR_OUT_OF_MEMORY); eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
return EINA_FALSE; return EINA_FALSE;
} }

View File

@ -27,6 +27,8 @@ START_TEST(eina_array_simple)
char *tmp; char *tmp;
unsigned int i; unsigned int i;
eina_array_init();
ea = eina_array_new(11); ea = eina_array_new(11);
fail_if(!ea); fail_if(!ea);
@ -53,6 +55,8 @@ START_TEST(eina_array_simple)
eina_array_clean(ea); eina_array_clean(ea);
eina_array_flush(ea); eina_array_flush(ea);
eina_array_free(ea); eina_array_free(ea);
eina_array_shutdown();
} }
END_TEST END_TEST
@ -62,6 +66,8 @@ START_TEST(eina_array_static)
char *tmp; char *tmp;
unsigned int i; unsigned int i;
eina_array_init();
eina_array_setup(&sea, 10); eina_array_setup(&sea, 10);
for (i = 0; i < 200; ++i) for (i = 0; i < 200; ++i)
@ -86,6 +92,8 @@ START_TEST(eina_array_static)
eina_array_clean(&sea); eina_array_clean(&sea);
eina_array_flush(&sea); eina_array_flush(&sea);
eina_array_shutdown();
} }
END_TEST END_TEST
@ -107,6 +115,8 @@ START_TEST(eina_array_remove_stuff)
int *tmp; int *tmp;
unsigned int i; unsigned int i;
eina_array_init();
ea = eina_array_new(64); ea = eina_array_new(64);
fail_if(!ea); fail_if(!ea);
@ -153,6 +163,8 @@ START_TEST(eina_array_remove_stuff)
fail_if(eina_array_count(ea) != 0); fail_if(eina_array_count(ea) != 0);
eina_array_free(ea); eina_array_free(ea);
eina_array_shutdown();
} }
END_TEST END_TEST