fixed a segfault in evas_object_top_get(). by cleaning up the code :)

SVN revision: 14688
This commit is contained in:
tsauerbeck 2005-05-09 19:40:49 +00:00 committed by tsauerbeck
parent 40aca025df
commit 70e894091f
1 changed files with 18 additions and 6 deletions

View File

@ -315,17 +315,29 @@ Evas_Object *
evas_object_top_get(Evas *e)
{
Evas_Object *obj2 = NULL;
Evas_Object_List *list;
Evas_Layer *layer;
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
return NULL;
MAGIC_CHECK_END();
if ((e->layers) &&
(((Evas_Object_List *)(e->layers))->last) &&
(((Evas_Layer *)(((Evas_Object_List *)(e->layers))->last))->objects) &&
(Evas_Object *)(((Evas_List *)(((Evas_Layer *)(((Evas_Object_List *)(e->layers))->last))->objects))->last))
obj2 = (Evas_Object *)(((Evas_List *)(((Evas_Layer *)(((Evas_Object_List *)(e->layers))->last))->objects))->last);
list = (Evas_Object_List *) e->layers;
if (!list) return NULL;
layer = (Evas_Layer *) list->last;
if (!layer) return NULL;
list = (Evas_Object_List *) layer->objects;
if (!list) return NULL;
obj2 = (Evas_Object *) list->last;
if (!obj2) return NULL;
while (((obj2) && (obj2->smart.parent)) ||
((obj2) && (obj2->delete_me)))
((obj2) && (obj2->delete_me))) {
obj2 = evas_object_below_get_internal(obj2);
}
return obj2;
}