clock_gettime(CLOCK_MONOTONIC, &tp);
time = (tp.tv_sec * 1000) + (tp.tv_nsec / 1000000L);
- for (GList *list = g_list_first(_key_event_list); list; list = list->next)
+ GList *key_list = g_list_first(_key_event_list);
+ while (key_list)
{
- Ecore_Event_Key *key = (Ecore_Event_Key *)list->data;
+ Ecore_Event_Key *key = (Ecore_Event_Key *)key_list->data;
if (!key) continue;
if (e_config->key_input_time_limit <= (time - key->timestamp))
eina_stringshare_del(key->keyname);
E_FREE(key);
- _key_event_list = g_list_delete_link(_key_event_list, list);
+ GList *next = key_list->next;
+ _key_event_list = g_list_delete_link(_key_event_list, key_list);
+ key_list = next;
}
+
_key_event_list = NULL;
}