summaryrefslogtreecommitdiff
path: root/src/bin/elementary/test_dnd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/elementary/test_dnd.c')
-rw-r--r--src/bin/elementary/test_dnd.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/bin/elementary/test_dnd.c b/src/bin/elementary/test_dnd.c
index 3b44c2bd40..93bed2a397 100644
--- a/src/bin/elementary/test_dnd.c
+++ b/src/bin/elementary/test_dnd.c
@@ -204,11 +204,15 @@ _grid_item_getcb(Evas_Object *obj, Evas_Coord x, Evas_Coord y, int *xposret, int
static inline char *
_strndup(const char *str, size_t len)
{
- size_t slen = strlen(str);
+ const char *p;
char *ret;
+ size_t slen;
- if (slen > len) slen = len;
- ret = malloc (slen + 1);
+ for (slen = 0, p = str;
+ (slen < len) && (*p);
+ p++, slen++);
+
+ ret = malloc(slen + 1);
if (!ret) return NULL;
if (slen > 0) memcpy(ret, str, slen);
@@ -1216,10 +1220,12 @@ _label_drop_cb(void *data EINA_UNUSED, Evas_Object *obj, Elm_Selection_Data *ev)
static Eina_Bool
_image_drop_cb(void *data EINA_UNUSED, Evas_Object *obj, Elm_Selection_Data *ev)
{
- const char *f = ev->data;
+ char *f = (char*)eina_memdup(ev->data, ev->len, 1);
+
printf("%s: obj: %s %p drop data: %s\n", __func__,
evas_object_type_get(obj), obj, f);
elm_image_file_set(obj, f, NULL);
+ free(f);
return EINA_TRUE;
}