fix another null deref
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Mon, 7 Nov 2011 23:29:44 +0000 (23:29 +0000)
committerMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Mon, 7 Nov 2011 23:29:44 +0000 (23:29 +0000)
SVN revision: 64905

src/modules/illume-keyboard/e_kbd_buf.c

index 3d7f000..d06779f 100644 (file)
@@ -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 *