elm_cnp: fix memory leaks 37/230637/1
authorTaehyub Kim <taehyub.kim@samsung.com>
Mon, 13 Apr 2020 06:16:04 +0000 (15:16 +0900)
committerTaehyub Kim <taehyub.kim@samsung.com>
Mon, 13 Apr 2020 06:21:59 +0000 (15:21 +0900)
Summary:
In copy and paste logic, there are some memory leaks logic.
so fixed.
@fix

Reviewers: bu5hm4n, Jaehyun_Cho

Reviewed By: Jaehyun_Cho

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11690

Change-Id: I60cd000315dfdc194e980d241c7d83d4be5eeb6b

src/lib/elementary/elm_cnp.c

index ab17f5f..1833c0b 100644 (file)
@@ -84,10 +84,12 @@ elm_cnp_selection_set(Evas_Object *obj, Elm_Sel_Type selection,
    const char *mime_type;
    Eina_Slice data;
    Eina_Array *tmp;
+   unsigned char *mem_buf = NULL;
 
    if (format == ELM_SEL_FORMAT_TEXT && ((char*)buf)[buflen - 1] != '\0')
      {
-        data.mem = eina_memdup((unsigned char *)buf, buflen, EINA_TRUE);
+        mem_buf = eina_memdup((unsigned char *)buf, buflen, EINA_TRUE);
+        data.mem = mem_buf;
         data.len = buflen + 1;
      }
    else
@@ -108,6 +110,9 @@ elm_cnp_selection_set(Evas_Object *obj, Elm_Sel_Type selection,
    content = eina_content_new(data, mime_type);
    _register_selection_changed(obj);
 
+   if (mem_buf != NULL)
+     free(mem_buf);
+
    return ecore_evas_selection_set(ee, _default_seat(obj), _elm_sel_type_to_ee_type(selection), content);
 }
 
@@ -199,10 +204,12 @@ _callback_storage_deliver(Eo *obj, void *data, const Eina_Value value)
      }
    else
      {
-        EINA_SAFETY_ON_FALSE_RETURN_VAL(format == ELM_SEL_FORMAT_TEXT || format == ELM_SEL_FORMAT_MARKUP || format == ELM_SEL_FORMAT_HTML, EINA_VALUE_EMPTY);
+        EINA_SAFETY_ON_FALSE_GOTO(format == ELM_SEL_FORMAT_TEXT || format == ELM_SEL_FORMAT_MARKUP || format == ELM_SEL_FORMAT_HTML, end);
 
         _elm_entry_entry_paste(obj, (const char *) d.data);
      }
+
+end:
    free(d.data);
 
    return EINA_VALUE_EMPTY;