transit - fix the double free obj_data case.
authorChunEon Park <hermet@hermet.pe.kr>
Thu, 20 Feb 2014 14:51:38 +0000 (23:51 +0900)
committerChunEon Park <hermet@hermet.pe.kr>
Thu, 20 Feb 2014 14:51:38 +0000 (23:51 +0900)
if the object is added twice to the one transit,
the obj_remove_cb would be called twice.

in this case it will try to access the freed obj_data and crashed up.

now it's fixed.

src/lib/elm_transit.c

index d8a2d3e..bb0cb00 100644 (file)
@@ -174,6 +174,7 @@ _transit_obj_remove_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *
         free(obj_data->state);
         free(obj_data);
      }
+   evas_object_data_del(obj, _transit_key);
    _remove_obj_from_list(transit, obj);
    if (!transit->objs && !transit->deleted) elm_transit_del(transit);
 }