evas_object_smart: fix dereference of null

Summary:
The cso could b NULL so we need to check if the cso is NULL or not before
dereferencing it.

Reviewers: jpeg, Hermet, jypark

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7075
This commit is contained in:
Shinwoo Kim 2018-09-21 16:46:03 +09:00 committed by Hermet Park
parent ed621d7003
commit 040bef8f13
1 changed files with 10 additions and 5 deletions

View File

@ -581,16 +581,21 @@ evas_object_smart_members_get_direct(const Evas_Object *eo_obj)
static void static void
_efl_canvas_group_group_members_all_del_internal(Evas_Smart_Data *o) _efl_canvas_group_group_members_all_del_internal(Evas_Smart_Data *o)
{ {
Evas_Object_Smart_Clipped_Data *cso = o->clipped ? o->data : NULL; Evas_Object *clipper;
Evas_Object_Protected_Data *memobj; Evas_Object_Protected_Data *memobj;
Eina_Inlist *itrn; Eina_Inlist *itrn;
clipper = _smart_clipper_get(o);
if (clipper)
{
EINA_INLIST_FOREACH_SAFE(o->contained, itrn, memobj) EINA_INLIST_FOREACH_SAFE(o->contained, itrn, memobj)
{ {
if (memobj->object != cso->clipper) if (memobj->object != clipper)
_evas_wrap_del(&memobj->object, memobj); _evas_wrap_del(&memobj->object, memobj);
} }
_evas_wrap_del(&cso->clipper, efl_data_scope_get(cso->clipper, EFL_CANVAS_OBJECT_CLASS)); _evas_wrap_del(&clipper, efl_data_scope_get(clipper, EFL_CANVAS_OBJECT_CLASS));
}
o->group_del_called = EINA_TRUE; o->group_del_called = EINA_TRUE;
} }