Mercurial > pidgin
changeset 31588: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 | 2b289a184dc2 |
children | dec74c97c598 dc1c25b81efd |
files | ChangeLog libpurple/protocols/jabber/roster.c |
diffstat | 2 files changed, 6 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Tue May 10 04:45:01 2011 +0000 +++ b/ChangeLog Wed May 11 01:58:03 2011 +0000 @@ -92,6 +92,9 @@ (Keith Moyer) (#12451) * Correctly handle a buddy's unsetting his/her vCard-based avatar. (Matthew W.S. Bell) (#13370) + * Squash one more situation that resulted in duplicate entries in + the roster (this one where the server reports the buddy as being + in the same (empty) group. (Reported by Danny Mayer) Plugins: * The Voice/Video Settings plugin now includes the ability to test
--- 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