forked from enlightenment/efl
elm cnp - wl - fix memory leak
fix memory leak specified in CID 1357160 , 1357159 , 1357158 , 1357157
This commit is contained in:
parent
85d45ee9b1
commit
4bc6ba4ff0
|
@ -2648,6 +2648,11 @@ _wl_selection_parser(void *_data, int size, char ***ret_data, int *ret_count)
|
||||||
files = t2;
|
files = t2;
|
||||||
files[num_files - 1] = strdup(tmp);
|
files[num_files - 1] = strdup(tmp);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
num_files--;
|
||||||
|
goto freetmp;
|
||||||
|
}
|
||||||
tmp[0] = 0;
|
tmp[0] = 0;
|
||||||
i = 0;
|
i = 0;
|
||||||
}
|
}
|
||||||
|
@ -2663,13 +2668,25 @@ _wl_selection_parser(void *_data, int size, char ***ret_data, int *ret_count)
|
||||||
files = t2;
|
files = t2;
|
||||||
files[num_files - 1] = strdup(tmp);
|
files[num_files - 1] = strdup(tmp);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
num_files--;
|
||||||
|
goto freetmp;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
freetmp:
|
||||||
free(tmp);
|
free(tmp);
|
||||||
free(data);
|
|
||||||
}
|
}
|
||||||
done:
|
done:
|
||||||
|
free(data);
|
||||||
if (ret_data) *ret_data = files;
|
if (ret_data) *ret_data = files;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < num_files; i++) free(files[i]);
|
||||||
|
free(files);
|
||||||
|
}
|
||||||
if (ret_count) *ret_count = num_files;
|
if (ret_count) *ret_count = num_files;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2707,12 +2724,12 @@ _wl_data_preparer_uri(Wl_Cnp_Selection *sel, Elm_Selection_Data *ddata, Ecore_Wl
|
||||||
Eina_Strbuf *strbuf;
|
Eina_Strbuf *strbuf;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
strbuf = eina_strbuf_new();
|
||||||
|
if (!strbuf) return EINA_FALSE;
|
||||||
|
|
||||||
_wl_selection_parser(ev->data, ev->len, &files, &num_files);
|
_wl_selection_parser(ev->data, ev->len, &files, &num_files);
|
||||||
cnp_debug("got a files list\n");
|
cnp_debug("got a files list\n");
|
||||||
|
|
||||||
strbuf = eina_strbuf_new();
|
|
||||||
if (!strbuf)
|
|
||||||
return EINA_FALSE;
|
|
||||||
for (i = 0; i < num_files; i++)
|
for (i = 0; i < num_files; i++)
|
||||||
{
|
{
|
||||||
uri = efreet_uri_decode(files[i]);
|
uri = efreet_uri_decode(files[i]);
|
||||||
|
@ -2727,7 +2744,9 @@ _wl_data_preparer_uri(Wl_Cnp_Selection *sel, Elm_Selection_Data *ddata, Ecore_Wl
|
||||||
}
|
}
|
||||||
if (i < (num_files - 1))
|
if (i < (num_files - 1))
|
||||||
eina_strbuf_append(strbuf, "\n");
|
eina_strbuf_append(strbuf, "\n");
|
||||||
|
free(files[i]);
|
||||||
}
|
}
|
||||||
|
free(files);
|
||||||
stripstr = eina_strbuf_string_steal(strbuf);
|
stripstr = eina_strbuf_string_steal(strbuf);
|
||||||
eina_strbuf_free(strbuf);
|
eina_strbuf_free(strbuf);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue