libpurple/protocols/jabber/google/google_roster.c

changeset 33764
7e7432c7b0aa
parent 29914
a4ed5999f6d0
child 34578
cfb2f856a5d0
--- a/libpurple/protocols/jabber/google/google_roster.c	Mon Feb 18 18:47:11 2013 -0800
+++ b/libpurple/protocols/jabber/google/google_roster.c	Mon Feb 18 18:59:08 2013 -0800
@@ -62,7 +62,7 @@
 		return FALSE;
 	}
 
- 	jid_norm = g_strdup(jabber_normalize(account, jid));
+	jid_norm = g_strdup(jabber_normalize(account, jid));
 
 	on_block_list = NULL != g_slist_find_custom(account->deny, jid_norm,
 	                                            (GCompareFunc)strcmp);
@@ -70,12 +70,14 @@
 	if (grt && (*grt == 'H' || *grt == 'h')) {
 		/* Hidden; don't show this buddy. */
 		GSList *buddies = purple_find_buddies(account, jid_norm);
-		if (buddies)
+		if (buddies) {
 			purple_debug_info("jabber", "Removing %s from local buddy list\n",
 			                  jid_norm);
 
-		for ( ; buddies; buddies = g_slist_delete_link(buddies, buddies)) {
-			purple_blist_remove_buddy(buddies->data);
+			do {
+				purple_blist_remove_buddy(buddies->data);
+				buddies = g_slist_delete_link(buddies, buddies);
+			} while (buddies);
 		}
 
 		g_free(jid_norm);
@@ -113,14 +115,12 @@
 	if(!buddies)
 		return;
 
-	b = buddies->data;
-
 	iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:roster");
 
 	query = xmlnode_get_child(iq->node, "query");
 	item = xmlnode_new_child(query, "item");
 
-	while(buddies) {
+	do {
 		PurpleGroup *g;
 
 		b = buddies->data;
@@ -129,8 +129,8 @@
 		group = xmlnode_new_child(item, "group");
 		xmlnode_insert_data(group, purple_group_get_name(g), -1);
 
-		buddies = buddies->next;
-	}
+		buddies = g_slist_delete_link(buddies, buddies);
+	} while (buddies);
 
 	balias = purple_buddy_get_local_buddy_alias(b);
 	xmlnode_set_attrib(item, "jid", who);
@@ -173,14 +173,12 @@
 	if(!buddies)
 		return;
 
-	b = buddies->data;
-
 	iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:roster");
 
 	query = xmlnode_get_child(iq->node, "query");
 	item = xmlnode_new_child(query, "item");
 
-	while(buddies) {
+	do {
 		PurpleGroup *g;
 
 		b = buddies->data;
@@ -189,8 +187,8 @@
 		group = xmlnode_new_child(item, "group");
 		xmlnode_insert_data(group, purple_group_get_name(g), -1);
 
-		buddies = buddies->next;
-	}
+		buddies = g_slist_delete_link(buddies, buddies);
+	} while (buddies);
 
 	balias = purple_buddy_get_local_buddy_alias(b);
 	xmlnode_set_attrib(item, "jid", who);

mercurial