When I signed off, Empathy exploded. l was 0x33, which oddly enough was
secretly not the address of a GList. :-) I think what happened is that
empathy_chatroom_manager_remove() deleted the list node currently
pointed to by l; then the loop advanced to l->next, which was now
garbage.
We don't need to keep iterating once we find the chatroom we were
looking for, so break out of the loop.
continue;
empathy_chatroom_set_tp_chat (chatroom, NULL);
+
if (!empathy_chatroom_is_favorite (chatroom))
{
/* Remove the chatroom from the list, unless it's in the list of
* favourites..
* FIXME this policy should probably not be in libempathy */
- empathy_chatroom_manager_remove (manager, chatroom);
+ chatroom_manager_remove_link (manager, l);
}
+
+ break;
}
}