diff options
Diffstat (limited to 'protocols/msn/msn.c')
-rw-r--r-- | protocols/msn/msn.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/protocols/msn/msn.c b/protocols/msn/msn.c index 679ac65e..00c01dc3 100644 --- a/protocols/msn/msn.c +++ b/protocols/msn/msn.c @@ -106,14 +106,20 @@ static void msn_logout( struct im_connection *ic ) msn_msgq_purge( ic, &md->msgq ); - while( md->groupcount > 0 ) - g_free( md->grouplist[--md->groupcount] ); - g_free( md->grouplist ); g_free( md->tokens[0] ); g_free( md->tokens[1] ); g_free( md->tokens[2] ); g_free( md->lock_key ); + while( md->groups ) + { + struct msn_group *mg = md->groups->data; + g_free( mg->id ); + g_free( mg->name ); + g_free( mg ); + md->groups = g_slist_remove( md->groups, mg ); + } + g_tree_destroy( md->domaintree ); md->domaintree = NULL; |