summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2017-08-31 19:25:26 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2017-09-01 10:09:37 +0900
commitf4ed430ddc153582da2aee84ea209959bf6e51f4 (patch)
treefa31607ca57eecc88544e2c02db75ad42515aede
parentcfe8170624c51761932b48fd6bb57f1c52dcff93 (diff)
downloadefl-f4ed430ddc153582da2aee84ea209959bf6e51f4.tar.gz
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
-rw-r--r--src/lib/eina/eina_array.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/lib/eina/eina_array.c b/src/lib/eina/eina_array.c
index e439450021..2a7446e647 100644
--- a/src/lib/eina/eina_array.c
+++ b/src/lib/eina/eina_array.c
@@ -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;