summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2017-07-23 18:53:46 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2017-07-23 18:53:46 +0900
commitb3b0411a05165b121da46ef9718e8a1d628a76bd (patch)
tree5460d8de6a7cc1c3b47ded2ad27d9f7da11f8571
parent6a65cb2f3c294e49dfe6dc895519eb08873bdb2b (diff)
downloadefl-b3b0411a05165b121da46ef9718e8a1d628a76bd.tar.gz
evas callbacks - check if obj->events is valid because it's cow alloced
it COULD be null and we do have other checks for it being not-null and we dont check if the alloc fails... so check. this SHOULD fix CID 1377547
-rw-r--r--src/lib/evas/canvas/evas_callbacks.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/lib/evas/canvas/evas_callbacks.c b/src/lib/evas/canvas/evas_callbacks.c
index 33d1e76aca..a6f3ee419e 100644
--- a/src/lib/evas/canvas/evas_callbacks.c
+++ b/src/lib/evas/canvas/evas_callbacks.c
@@ -436,13 +436,15 @@ evas_object_event_callback_call(Evas_Object *eo_obj, Evas_Object_Protected_Data
nothing_here:
if (!obj->no_propagate)
{
- if ((obj->smart.parent || obj->events->parent) && (type != EVAS_CALLBACK_FREE) &&
- (type <= EVAS_CALLBACK_KEY_UP))
+ if ((obj->smart.parent || ((obj->events) && obj->events->parent)) &&
+ (type != EVAS_CALLBACK_FREE) &&
+ (type <= EVAS_CALLBACK_KEY_UP))
{
Evas_Object_Protected_Data *parent_obj;
Eo *parent;
- parent = obj->events->parent ?: obj->smart.parent;
+ parent = ((obj->events) && obj->events->parent) ?
+ obj->events->parent: obj->smart.parent;
parent_obj = efl_data_scope_get(parent, EFL_CANVAS_OBJECT_CLASS);
evas_object_event_callback_call(parent, parent_obj, type, event_info, event_id, efl_event_desc);
}