eina_array: Fix magic checks to return

The EINA_MAGIC check inside eina_array were just printing the error
message, without failing. This could lead to more crashes than
necessary.

@fix
This commit is contained in:
Jean-Philippe Andre 2017-08-31 19:25:26 +09:00
parent cfe8170624
commit f4ed430ddc
1 changed files with 11 additions and 9 deletions

View File

@ -46,10 +46,13 @@ static const char EINA_MAGIC_ARRAY_STR[] = "Eina Array";
static const char EINA_MAGIC_ARRAY_ITERATOR_STR[] = "Eina Array Iterator";
static const char EINA_MAGIC_ARRAY_ACCESSOR_STR[] = "Eina Array Accessor";
#define EINA_MAGIC_CHECK_ARRAY(d) \
do { \
if (!EINA_MAGIC_CHECK(d, EINA_MAGIC_ARRAY)) { \
EINA_MAGIC_FAIL(d, EINA_MAGIC_ARRAY); } \
#define EINA_MAGIC_CHECK_ARRAY(d, ...) \
do { \
if (!EINA_MAGIC_CHECK(d, EINA_MAGIC_ARRAY)) \
{ \
EINA_MAGIC_FAIL(d, EINA_MAGIC_ARRAY); \
return __VA_ARGS__; \
} \
} while (0)
#define EINA_MAGIC_CHECK_ARRAY_ITERATOR(d, ...) \
@ -195,8 +198,7 @@ eina_array_grow(Eina_Array *array)
unsigned int total;
EINA_SAFETY_ON_NULL_RETURN_VAL(array, EINA_FALSE);
EINA_MAGIC_CHECK_ARRAY(array);
EINA_MAGIC_CHECK_ARRAY(array, EINA_FALSE);
total = array->total + array->step;
tmp = realloc(array->data, sizeof (void *) * total);
@ -350,7 +352,7 @@ eina_array_remove(Eina_Array *array, Eina_Bool (*keep)(void *data,
EINA_SAFETY_ON_NULL_RETURN_VAL(array, EINA_FALSE);
EINA_SAFETY_ON_NULL_RETURN_VAL(keep, EINA_FALSE);
EINA_MAGIC_CHECK_ARRAY(array);
EINA_MAGIC_CHECK_ARRAY(array, EINA_FALSE);
if (array->total == 0) return EINA_TRUE;
// 1. walk through all items and shuffle down any items on top of
@ -394,7 +396,7 @@ eina_array_iterator_new(const Eina_Array *array)
Eina_Iterator_Array *it;
EINA_SAFETY_ON_NULL_RETURN_VAL(array, NULL);
EINA_MAGIC_CHECK_ARRAY(array);
EINA_MAGIC_CHECK_ARRAY(array, NULL);
it = calloc(1, sizeof (Eina_Iterator_Array));
if (!it) return NULL;
@ -419,7 +421,7 @@ eina_array_accessor_new(const Eina_Array *array)
Eina_Accessor_Array *ac;
EINA_SAFETY_ON_NULL_RETURN_VAL(array, NULL);
EINA_MAGIC_CHECK_ARRAY(array);
EINA_MAGIC_CHECK_ARRAY(array, NULL);
ac = calloc(1, sizeof (Eina_Accessor_Array));
if (!ac) return NULL;