diff src/protocols/msn/user.c @ 19829:c590e780b3a0

[gaim-migrate @ 17055] fix bug on group management committed by MaYuan<mayuan2006@gmail.com> committer: Ethan Blanton <elb@pidgin.im>
author Ma Yuan <mayuan2006@gmail.com>
date Sun, 27 Aug 2006 08:03:32 +0000
parents 1b6c631012d9
children 3b971c87279d
line wrap: on
line diff
--- a/src/protocols/msn/user.c	Sat Aug 26 13:03:11 2006 +0000
+++ b/src/protocols/msn/user.c	Sun Aug 27 08:03:32 2006 +0000
@@ -60,8 +60,13 @@
 	if (user->clientcaps != NULL)
 		g_hash_table_destroy(user->clientcaps);
 
-	if (user->group_ids != NULL)
+	if (user->group_ids != NULL){
+		GList *l;
+		for (l = user->group_ids; l != NULL; l = l->next){
+			g_free(l->data);
+		}
 		g_list_free(user->group_ids);
+	}
 
 	if (user->msnobj != NULL)
 		msn_object_destroy(user->msnobj);
@@ -265,20 +270,22 @@
 	GaimBuddy *b;
 	GaimGroup *g;
 	const char *passport;
+	const char *group_id;
 	const char *group_name;
 
 	g_return_if_fail(user != NULL);
 	g_return_if_fail(id != NULL);
 
-	user->group_ids = g_list_append(user->group_ids,id);
+	group_id = g_strdup(id);
+	user->group_ids = g_list_append(user->group_ids,group_id);
 
 	userlist = user->userlist;
 	account = userlist->session->account;
 	passport = msn_user_get_passport(user);
 
-	group_name = msn_userlist_find_group_name(userlist, id);
+	group_name = msn_userlist_find_group_name(userlist, group_id);
 
-	gaim_debug_info("User","group id:%s,name:%s,user:%s\n",id,group_name,passport);
+	gaim_debug_info("User","group id:%s,name:%s,user:%s\n",group_id,group_name,passport);
 
 	g = gaim_find_group(group_name);
 
@@ -315,6 +322,7 @@
 	g_return_if_fail(id != NULL);
 
 	user->group_ids = g_list_remove(user->group_ids, id);
+	g_free(id);
 }
 
 void