diff libpurple/protocols/jabber/roster.c @ 32040:06ed9020b784

jabber: Treat empty <group/> elements as "Buddies", not "" This ultimately led to duplicates in the list, because we had one entry in the GSList as "", and one as NULL, both of which are invalid group names, which resulted in the core blithely replacing them with "Buddies" and generating duplicates. I've tested with and without, and can reproduce the issues without the change. Log: <item subscription='both' name='person' jid='person@example.com'><group></group><group></group></item> (19:32:23) jabber: jabber_roster_parse(): Removing person@example.com from group 'Buddies' on the local list (19:32:23) GLib: g_string_append: assertion `val != NULL' failed (19:32:23) jabber: jabber_roster_parse(): Adding person@example.com to groups: , (19:32:23) g_log: purple_find_group: assertion `(name != NULL) && (*name != '\0')' failed (19:32:23) g_log: purple_group_new: assertion `name != NULL' failed (19:32:23) g_log: purple_blist_add_group: assertion `group != NULL' failed (19:32:23) g_log: purple_find_group: assertion `(name != NULL) && (*name != '\0')' failed (19:32:23) g_log: purple_group_new: assertion `*name != '\0'' failed (19:32:23) g_log: purple_blist_add_group: assertion `group != NULL' failed Since I had to look it up, purple_blist_add_buddy replaces (group == NULL) with "Buddies".
author Paul Aurich <paul@darkrain42.org>
date Wed, 11 May 2011 01:58:03 +0000
parents 25e200cb3532
children 3caef255ad47
line wrap: on
line diff
--- a/libpurple/protocols/jabber/roster.c	Tue May 10 04:45:01 2011 +0000
+++ b/libpurple/protocols/jabber/roster.c	Wed May 11 01:58:03 2011 +0000
@@ -243,7 +243,6 @@
 			remove_purple_buddies(js, jid);
 		} else {
 			GSList *groups = NULL;
-			gboolean seen_empty = FALSE;
 
 			if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER)
 				if (!jabber_google_roster_incoming(js, item))
@@ -252,10 +251,9 @@
 			for(group = xmlnode_get_child(item, "group"); group; group = xmlnode_get_next_twin(group)) {
 				char *group_name = xmlnode_get_data(group);
 
-				if (!group_name && !seen_empty) {
-					group_name = g_strdup("");
-					seen_empty = TRUE;
-				}
+				if (group_name == NULL || *group_name == '\0')
+					/* Changing this string?  Look in add_purple_buddy_to_groups */
+					group_name = g_strdup(_("Buddies"));
 
 				/*
 				 * See the note in add_purple_buddy_to_groups; the core handles