# HG changeset patch # User mikael # Date 1118777831 0 # Node ID 57f9005b8844368bae41fa39efd5145af3660e8d # Parent 7ca7ca8502701822b4cef0db9b9a3beb98e43321 [/trunk] Changeset 259 by mikael * Fix a bug (segfault on buddy deletion) introduced when I added unread_list diff -r 7ca7ca850270 -r 57f9005b8844 mcabber/src/roster.c --- a/mcabber/src/roster.c Tue Jun 14 19:36:29 2005 +0000 +++ b/mcabber/src/roster.c Tue Jun 14 19:37:11 2005 +0000 @@ -167,20 +167,23 @@ GSList *sl_user, *sl_group; GSList **sl_group_listptr; roster *roster_usr; + GSList *node; sl_user = roster_find(jid, jidsearch, ROSTER_TYPE_USER|ROSTER_TYPE_AGENT); if (sl_user == NULL) return; - // Let's free memory (jid, name) roster_usr = (roster*)sl_user->data; + + // Remove (if present) from unread messages list + node = g_slist_find(unread_list, roster_usr); + if (node) unread_list = g_slist_delete_link(unread_list, node); + + // Let's free memory (jid, name, status message) if (roster_usr->jid) g_free((gchar*)roster_usr->jid); if (roster_usr->name) g_free((gchar*)roster_usr->name); if (roster_usr->status_msg) g_free((gchar*)roster_usr->status_msg); g_free(roster_usr); - // Remove (if present) from unread messages list - unread_list = g_slist_delete_link(unread_list, sl_user); - // That's a little complex, we need to dereference twice sl_group = ((roster*)sl_user->data)->list; sl_group_listptr = &((roster*)(sl_group->data))->list;