herdsman pushed a commit to branch elementary-1.12.

http://git.enlightenment.org/core/elementary.git/commit/?id=6bebbb43a14ccb9eb91d3c7d526e57d9bb80a535

commit 6bebbb43a14ccb9eb91d3c7d526e57d9bb80a535
Author: Daniel Hirt <daniel.h...@samsung.com>
Date:   Sun Jan 4 13:54:03 2015 +0200

    Elm_Entry: Fix dropped text data insertion
    
    Fixes bad drag&drop into entry widgets, since the drop callback
    assumed that the dropped text ends with a NULL character.
    
    How to reproduce:
    1. Open 'elementary_test -to Entry'
    2. Open some application (e.g. Firefox)
    3. Select some (preferably short) text, and drag&drop it to the entry
    widget. This sometimes pastes additional corrupted text (better try
    with a 1-3 characters text).
    
    @fix
---
 src/lib/elm_entry.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/lib/elm_entry.c b/src/lib/elm_entry.c
index 7582ff1..d398d03 100644
--- a/src/lib/elm_entry.c
+++ b/src/lib/elm_entry.c
@@ -616,6 +616,7 @@ _drag_drop_cb(void *data EINA_UNUSED,
               Elm_Selection_Data *drop)
 {
    Eina_Bool rv;
+   char *buf;
 
    ELM_ENTRY_DATA_GET(obj, sd);
 
@@ -626,7 +627,16 @@ _drag_drop_cb(void *data EINA_UNUSED,
 
    if (!rv) WRN("Warning: Failed to position cursor: paste anyway");
 
-   elm_entry_entry_insert(obj, drop->data);
+   buf = malloc(drop->len + 1);
+   if (!buf)
+     {
+        ERR("Failed to allocate memory for dropped text %p", obj);
+        return EINA_FALSE;
+     }
+   memcpy(buf, drop->data, drop->len);
+   buf[drop->len] = '\0';
+   elm_entry_entry_insert(obj, buf);
+   free(buf);
    edje_object_part_text_cursor_copy
      (sd->entry_edje, "elm.text", EDJE_CURSOR_USER, /*->*/ EDJE_CURSOR_MAIN);
 

-- 


Reply via email to