forked from enlightenment/rage
dnd - handle dnd data that is not nul terminated already
fix issue where we assumed dnd data is a nul terminated string. it's not. it's raw data. fix.
This commit is contained in:
parent
b24a22ba6f
commit
6c98c37e30
|
@ -172,12 +172,16 @@ Eina_Bool
|
||||||
_cb_drop(void *data, Evas_Object *o EINA_UNUSED, Elm_Selection_Data *ev)
|
_cb_drop(void *data, Evas_Object *o EINA_UNUSED, Elm_Selection_Data *ev)
|
||||||
{
|
{
|
||||||
Evas_Object *win = data;
|
Evas_Object *win = data;
|
||||||
char **plist, **p, *esc;
|
char **plist, **p, *esc, *tmp;
|
||||||
|
|
||||||
if (!ev->data)
|
if (!ev->data)
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
|
|
||||||
plist = eina_str_split((char *) ev->data, "\n", -1);
|
tmp = malloc(ev->len + 1);
|
||||||
|
if (!tmp) return EINA_TRUE;
|
||||||
|
memcpy(tmp, ev->data, ev->len);
|
||||||
|
tmp[ev->len] = 0;
|
||||||
|
plist = eina_str_split(tmp, "\n", -1);
|
||||||
for (p = plist; *p != NULL; ++p)
|
for (p = plist; *p != NULL; ++p)
|
||||||
{
|
{
|
||||||
esc = _escape_parse(*p);
|
esc = _escape_parse(*p);
|
||||||
|
@ -198,6 +202,7 @@ _cb_drop(void *data, Evas_Object *o EINA_UNUSED, Elm_Selection_Data *ev)
|
||||||
|
|
||||||
free(*plist);
|
free(*plist);
|
||||||
free(plist);
|
free(plist);
|
||||||
|
free(tmp);
|
||||||
|
|
||||||
if (!pending_dir)
|
if (!pending_dir)
|
||||||
_dnd_finish(win);
|
_dnd_finish(win);
|
||||||
|
|
Loading…
Reference in New Issue