# HG changeset patch # User Mark Doliner # Date 1298281547 0 # Node ID 6b2b8cc8e7ae4410c18378abf30d98eee716b8ba # Parent 3fe2bd89594680b464ad14e15634afdabab10904 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 diff -r 3fe2bd895946 -r 6b2b8cc8e7ae ChangeLog --- a/ChangeLog Mon Feb 21 09:28:03 2011 +0000 +++ b/ChangeLog Mon Feb 21 09:45:47 2011 +0000 @@ -4,6 +4,10 @@ General: * 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) + XMPP: * Fix building on platforms with an older glib (inadvertantly broken in 2.7.10). (#13329) diff -r 3fe2bd895946 -r 6b2b8cc8e7ae libpurple/protocols/oscar/oscar.c --- a/libpurple/protocols/oscar/oscar.c Mon Feb 21 09:28:03 2011 +0000 +++ b/libpurple/protocols/oscar/oscar.c Mon Feb 21 09:45:47 2011 +0000 @@ -4000,9 +4000,12 @@ /*** 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 */