From 4ae3818d7cf3dd8a0818bf5b1758c3e15f0a283a Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 7 Nov 2011 23:29:44 +0000 Subject: [PATCH] fix another null deref SVN revision: 64905 --- src/modules/illume-keyboard/e_kbd_buf.c | 27 ++++++++++--------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/src/modules/illume-keyboard/e_kbd_buf.c b/src/modules/illume-keyboard/e_kbd_buf.c index 3d7f00087..d06779ffd 100644 --- a/src/modules/illume-keyboard/e_kbd_buf.c +++ b/src/modules/illume-keyboard/e_kbd_buf.c @@ -149,31 +149,26 @@ _e_kbd_buf_actual_string_update(E_Kbd_Buf *kb) char *actual = NULL; int actual_len = 0; unsigned int actual_size = 0; + E_Kbd_Buf_Keystroke *ks; _e_kbd_buf_actual_string_clear(kb); - for (l = kb->keystrokes; l; l = l->next) + EINA_LIST_FOREACH(kb->keystrokes, l, ks) { - E_Kbd_Buf_Keystroke *ks; const char *str; - ks = l->data; str = _e_kbd_buf_keystroke_string_get(kb, ks); - if (str) + if (!str) continue; + if (!actual) actual_size += 64, actual = malloc(actual_size); + else if ((actual_len + strlen(str) + 1) > actual_size) { - if ((actual_len + strlen(str) + 1) > actual_size) - { - actual_size += 64; - actual = realloc(actual, actual_size); - } - strcpy(actual + actual_len, str); - actual_len += strlen(str); + actual_size += 64; + actual = realloc(actual, actual_size); } + strcpy(actual + actual_len, str); + actual_len += strlen(str); } - if (actual) - { - kb->actual_string = eina_stringshare_add(actual); - if (actual) free(actual); - } + kb->actual_string = eina_stringshare_add(actual); + free(actual); } static const char *