diff options
Diffstat (limited to 'src/bin/elementary/test_dnd.c')
-rw-r--r-- | src/bin/elementary/test_dnd.c | 14 |
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; } |