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 */
};
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)))

View File

@ -27,9 +27,22 @@
#include <stdlib.h>
#include <string.h>
#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;

View File

@ -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;
}

View File

@ -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