elm_cnp: fix memory leaks

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
This commit is contained in:
Taehyub Kim 2020-04-13 15:16:04 +09:00 committed by Jaehyun Cho
parent f9ae39ef52
commit d43515d9dc
1 changed files with 9 additions and 2 deletions

View 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;