elm map - fix crash on badly handled zoom timeout callback
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Wed, 2 Sep 2015 10:34:06 +0000 (19:34 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Wed, 2 Sep 2015 10:34:06 +0000 (19:34 +0900)
if sd->obj is null then the a zoom timeout has a null data param and
that means we cant get sd data... so dont set up a zoom timeout unless
sd->obj is valid.

@fix

src/lib/elm_map.c

index 8a31018..1017270 100644 (file)
@@ -1122,12 +1122,17 @@ _zoom_do(Elm_Map_Data *sd,
               (x, y, vw, vh));
      }
 
-   if (sd->zoom_timer) ecore_timer_del(sd->zoom_timer);
+   if (sd->zoom_timer)
+     {
+        ecore_timer_del(sd->zoom_timer);
+        sd->zoom_timer = NULL;
+     }
    else
       eo_do(sd->obj, eo_event_callback_call
         (EVAS_ZOOMABLE_INTERFACE_EVENT_ZOOM_START, NULL));
 
-   sd->zoom_timer = ecore_timer_add(0.25, _zoom_timeout_cb, sd->obj);
+   if (sd->obj)
+     sd->zoom_timer = ecore_timer_add(0.25, _zoom_timeout_cb, sd->obj);
    eo_do(sd->obj, eo_event_callback_call
      (ELM_MAP_EVENT_ZOOM_CHANGE, NULL));