From 6eb6f805ba501f225548b6e405d87c932248e416 Mon Sep 17 00:00:00 2001 From: WooHyun Jung Date: Tue, 21 Jan 2014 21:00:29 +0900 Subject: [PATCH] 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. --- legacy/elementary/src/lib/elm_entry.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/legacy/elementary/src/lib/elm_entry.c b/legacy/elementary/src/lib/elm_entry.c index 29991b9e6b..51d321fd37 100644 --- a/legacy/elementary/src/lib/elm_entry.c +++ b/legacy/elementary/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); }