woohyun pushed a commit to branch master.

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

commit 6d5a1a3d25a671ddb7d6c007596274ceb77ef2e6
Author: WooHyun Jung <wh0705.j...@samsung.com>
Date:   Tue Jan 21 21:00:29 2014 +0900

    entry: NULL should be set to the correct position of tmpbuf.
    
    If edje_object_part_text_get gives different text from original one,
    length of text can be changed. So the last position of tmpbuf should
    be calculated again refering to the current text to be returned.
---
 src/lib/elm_entry.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/lib/elm_entry.c b/src/lib/elm_entry.c
index 29991b9..51d321f 100644
--- a/src/lib/elm_entry.c
+++ b/src/lib/elm_entry.c
@@ -2829,12 +2829,12 @@ proceed:
    if (sd->append_text_len > 0)
      {
         char *tmpbuf;
-        size_t tlen;
+        size_t len, tlen;
 
         tlen = strlen(text);
+        len = tlen + sd->append_text_len - sd->append_text_position;
         /* FIXME: need that or we do copy uninitialised data */
-        tmpbuf = calloc(1, tlen + sd->append_text_len -
-                        sd->append_text_position + 1);
+        tmpbuf = calloc(1, len + 1);
         if (!tmpbuf)
           {
              ERR("Failed to allocate memory for entry's text %p", obj);
@@ -2846,7 +2846,7 @@ proceed:
           memcpy(tmpbuf + tlen, sd->append_text_left
                  + sd->append_text_position, sd->append_text_len
                  - sd->append_text_position);
-        tmpbuf[sd->append_text_len] = '\0';
+        tmpbuf[len] = '\0';
         eina_stringshare_replace(&sd->text, tmpbuf);
         free(tmpbuf);
      }

-- 


Reply via email to