From b389f6dc9a4ce63d3f314933d30260f75b345736 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Mon, 11 Mar 2013 15:55:04 +0900 Subject: [PATCH] make evas smart callbnacks safer if something bad happens in memory. --- src/lib/evas/canvas/evas_object_smart.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/lib/evas/canvas/evas_object_smart.c b/src/lib/evas/canvas/evas_object_smart.c index 429734da91..f1ac3a658e 100644 --- a/src/lib/evas/canvas/evas_object_smart.c +++ b/src/lib/evas/canvas/evas_object_smart.c @@ -752,6 +752,7 @@ evas_object_smart_callback_del(Evas_Object *eo_obj, const char *event, Evas_Smar if (!event) return NULL; EINA_LIST_FOREACH(o->callbacks, l, cb) { + if (!cb) continue; if ((!strcmp(cb->event, event)) && (cb->func == func)) { void *data; @@ -780,6 +781,7 @@ evas_object_smart_callback_del_full(Evas_Object *eo_obj, const char *event, Evas if (!event) return NULL; EINA_LIST_FOREACH(o->callbacks, l, cb) { + if (!cb) continue; if ((!strcmp(cb->event, event)) && (cb->func == func) && (cb->func_data == data)) { void *ret; @@ -814,6 +816,7 @@ evas_object_smart_callback_call(Evas_Object *eo_obj, const char *event, void *ev strshare = eina_stringshare_add(event); EINA_LIST_FOREACH(o->callbacks, l, cb) { + if (!cb) continue; if (!cb->delete_me) { if (cb->event == strshare) @@ -1139,6 +1142,7 @@ evas_object_smart_callbacks_clear(Evas_Object *eo_obj) { cb = eina_list_data_get(l); l = eina_list_next(l); + if (!cb) continue; if (cb->delete_me) { o->callbacks = eina_list_remove(o->callbacks, cb); @@ -1206,6 +1210,7 @@ evas_object_smart_cleanup(Evas_Object *eo_obj) { Evas_Smart_Callback *cb = o->callbacks->data; o->callbacks = eina_list_remove(o->callbacks, cb); + if (!cb) continue; if (cb->event) eina_stringshare_del(cb->event); EVAS_MEMPOOL_FREE(_mp_cb, cb); }