fix another null deref

SVN revision: 64905
This commit is contained in:
Mike Blumenkrantz 2011-11-07 23:29:44 +00:00
parent 2a905bb70d
commit 4ae3818d7c
1 changed files with 11 additions and 16 deletions

View File

@ -149,31 +149,26 @@ _e_kbd_buf_actual_string_update(E_Kbd_Buf *kb)
char *actual = NULL; char *actual = NULL;
int actual_len = 0; int actual_len = 0;
unsigned int actual_size = 0; unsigned int actual_size = 0;
E_Kbd_Buf_Keystroke *ks;
_e_kbd_buf_actual_string_clear(kb); _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; const char *str;
ks = l->data;
str = _e_kbd_buf_keystroke_string_get(kb, ks); 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);
actual_size += 64;
actual = realloc(actual, actual_size);
}
strcpy(actual + actual_len, str);
actual_len += strlen(str);
} }
strcpy(actual + actual_len, str);
actual_len += strlen(str);
} }
if (actual) kb->actual_string = eina_stringshare_add(actual);
{ free(actual);
kb->actual_string = eina_stringshare_add(actual);
if (actual) free(actual);
}
} }
static const char * static const char *