From 3d6c0f64be6eb8b616ff853fd48027d9d057d91c Mon Sep 17 00:00:00 2001 From: woohyun Date: Sun, 25 Sep 2011 04:14:17 +0000 Subject: [PATCH] elementary/entry : Fix possible memory leak problem. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@63597 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/elm_entry.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/lib/elm_entry.c b/src/lib/elm_entry.c index c8ddc05..7c5f382 100644 --- a/src/lib/elm_entry.c +++ b/src/lib/elm_entry.c @@ -2792,7 +2792,7 @@ EAPI void elm_entry_filter_limit_size(void *data, Evas_Object *entry, char **text) { Elm_Entry_Filter_Limit_Size *lim = data; - char *current; + char *current, *utfstr; int len, newlen; const char *(*text_get)(const Evas_Object *); const char *widget_type; @@ -2810,6 +2810,7 @@ elm_entry_filter_limit_size(void *data, Evas_Object *entry, char **text) return; current = elm_entry_markup_to_utf8(text_get(entry)); + utfstr = elm_entry_markup_to_utf8(*text); if (lim->max_char_count > 0) { @@ -2818,11 +2819,12 @@ elm_entry_filter_limit_size(void *data, Evas_Object *entry, char **text) { evas_object_smart_callback_call(entry, "maxlength,reached", NULL); free(*text); - free(current); *text = NULL; + free(current); + free(utfstr); return; } - newlen = evas_string_char_len_get(elm_entry_markup_to_utf8(*text)); + newlen = evas_string_char_len_get(utfstr); if ((len + newlen) > lim->max_char_count) _add_chars_till_limit(entry, text, (lim->max_char_count - len), LENGTH_UNIT_CHAR); } @@ -2833,15 +2835,17 @@ elm_entry_filter_limit_size(void *data, Evas_Object *entry, char **text) { evas_object_smart_callback_call(entry, "maxlength,reached", NULL); free(*text); - free(current); *text = NULL; + free(current); + free(utfstr); return; } - newlen = strlen(elm_entry_markup_to_utf8(*text)); + newlen = strlen(utfstr); if ((len + newlen) > lim->max_byte_count) _add_chars_till_limit(entry, text, (lim->max_byte_count - len), LENGTH_UNIT_BYTE); } free(current); + free(utfstr); } EAPI void -- 2.7.4