elm: resolve possible memory leak
authorJongmin Lee <jm105.lee@samsung.com>
Fri, 20 Apr 2018 01:11:24 +0000 (10:11 +0900)
committerWonki Kim <wonki_.kim@samsung.com>
Fri, 20 Apr 2018 11:39:29 +0000 (20:39 +0900)
Change-Id: I044d2cf83d61cdfb400ed582a315f2cdcf4b3f6c

src/lib/elementary/efl_ui_dnd.c

index 124a5b3..1012394 100644 (file)
@@ -315,7 +315,7 @@ elm_drag_start(Evas_Object *obj, Elm_Sel_Format format, const char *data,
    Dnd_Drag_Accept *accept = calloc(1, sizeof(Dnd_Drag_Accept));
    Dnd_Drag_Done *done = calloc(1, sizeof(Dnd_Drag_Done));
    Dnd_Icon_Create *ic = calloc(1, sizeof(Dnd_Icon_Create));
-   if (!pos || !accept || !done || !ic) return EINA_FALSE;
+   if (!pos || !accept || !done || !ic) goto on_error;
 
    pos->pos_data = drag_pos_data;
    pos->pos_cb = drag_pos_cb;
@@ -344,6 +344,14 @@ elm_drag_start(Evas_Object *obj, Elm_Sel_Format format, const char *data,
                                     ic, _dnd_icon_create_cb, NULL, seatid);
 
    return EINA_TRUE;
+
+on_error:
+   if (pos) free(pos);
+   if (accept) free(accept);
+   if (done) free(done);
+   if (ic) free(ic);
+
+   return EINA_FALSE;
 }
 
 EAPI Eina_Bool