pidgin: a657534f: OOH! I think I found the cause of a bug...

markdoliner at markdoliner at
Mon Feb 21 04:50:42 EST 2011

Revision: a657534f694305a613db4946ca8ea9ab4c8f1c1d
Parent:   018335d39d5488d4512acce61adbb0318d01334f
Author:   markdoliner at
Date:     02/21/11 04:45:47
Branch:   im.pidgin.pidgin


OOH!  I think I found the cause of a bug!  I changed this function in revision
eadc83c534fbbc673a6876ddb1e0bdac8428c07b to try to make it cleaner.  When I
did that, I added a break here when I should have added a continue.  The result
is that if we encounter a non-utf8 name for an item in your server side buddy
list then we bail out earlier and don't add any server stored buddies to your
local list.  That's bad.  I think this caused a lot of people to not see their
complete buddy list.  This probably affected ICQ users a lot more than AIM 
users, because ICQ users tend to use more 3rd party IM clients, and 3rd party
IM clients sometimes put non-utf8 text in the name field of these items when
they shouldn't.

Hopefully fixes #13386

Changes against parent 018335d39d5488d4512acce61adbb0318d01334f

  patched  ChangeLog
  patched  libpurple/protocols/oscar/oscar.c

-------------- next part --------------
--- ChangeLog	0f9aa15fc2cfe119c6cb3fee4cc5c06bc205a37e
+++ ChangeLog	2706a132221761c93ae5652b0df72cb6665d516c
@@ -4,6 +4,10 @@ version 2.7.11 (??/??/????):
 	* Our bundled libgadu should now build on HP-UX.
+	AIM:
+	* Fix a bug where some buddies from your buddy list might not show up.
+	  Affected non-English ICQ users the most. (#13386)
 	* Fix building on platforms with an older glib (inadvertantly broken in
 	  2.7.10).  (#13329)
--- libpurple/protocols/oscar/oscar.c	007506f489c72c6bf026f3d20bd934c8380fc64c
+++ libpurple/protocols/oscar/oscar.c	d2c9d3d86e975571c10f6163835a48696e3e2b81
@@ -4000,9 +4000,12 @@ static int purple_ssi_parselist(OscarDat
 	/*** Begin code for adding from server list to local list ***/
 	for (curitem=od->ssi.local; curitem; curitem=curitem->next) {
-		if (curitem->name && !g_utf8_validate(curitem->name, -1, NULL))
+		if (curitem->name && !g_utf8_validate(curitem->name, -1, NULL)) {
 			/* Got node with invalid UTF-8 in the name.  Skip it. */
-			break;
+			purple_debug_warning("oscar", "ssi: server list contains item of "
+					"type 0x%04hhx with a non-utf8 name\n", curitem->type);
+			continue;
+		}
 		switch (curitem->type) {
 			case AIM_SSI_TYPE_BUDDY: { /* Buddy */

More information about the Commits mailing list