# HG changeset patch # User Christian Hammond # Date 1085950382 0 # Node ID c42c3ac3466ea16d91ad2afa01857454bb2d06a9 # Parent 9c1358090c6f46bf57c46f330ebbfa69b5cb9d7a [gaim-migrate @ 9915] "Enclosed patch (against currrent CVS) fixes a crash that can happen during resolving the buddy list in SILC prpl." -- Pekka Riikonen committer: Tailor Script diff -r 9c1358090c6f -r c42c3ac3466e ChangeLog --- a/ChangeLog Sun May 30 20:41:51 2004 +0000 +++ b/ChangeLog Sun May 30 20:53:02 2004 +0000 @@ -3,6 +3,8 @@ version 0.79cvs: Bug Fixes: * Non-looping animated icons no longer cause Gaim to freeze + * Fixed a crash in SILC that sometimes happened when resolving + the buddy list (Pekka Riikonen) version 0.78 (05/30/2004): New Features: diff -r 9c1358090c6f -r c42c3ac3466e src/protocols/silc/buddy.c --- a/src/protocols/silc/buddy.c Sun May 30 20:41:51 2004 +0000 +++ b/src/protocols/silc/buddy.c Sun May 30 20:53:02 2004 +0000 @@ -311,7 +311,7 @@ static void silcgaim_buddy_keyagr(GaimBlistNode *node, gpointer data) { - GaimBuddy *buddy; + GaimBuddy *buddy; buddy = (GaimBuddy *)node; silcgaim_buddy_keyagr_do(buddy->account->gc, buddy->name, FALSE); @@ -797,56 +797,58 @@ /* Now that we have the public key and we trust it now we save the attributes of the buddy and update its status. */ - silc_dlist_start(client_entry->attrs); - while ((attr = silc_dlist_get(client_entry->attrs)) != SILC_LIST_END) { - attribute = silc_attribute_get_attribute(attr); - - switch (attribute) { - - case SILC_ATTRIBUTE_USER_INFO: - if (!silc_attribute_get_object(attr, (void *)&vcard, - sizeof(vcard))) - continue; - break; + if (client_entry->attrs) { + silc_dlist_start(client_entry->attrs); + while ((attr = silc_dlist_get(client_entry->attrs)) + != SILC_LIST_END) { + attribute = silc_attribute_get_attribute(attr); - case SILC_ATTRIBUTE_STATUS_MESSAGE: - if (!silc_attribute_get_object(attr, (void *)&message, - sizeof(message))) - continue; - break; + switch (attribute) { + case SILC_ATTRIBUTE_USER_INFO: + if (!silc_attribute_get_object(attr, (void *)&vcard, + sizeof(vcard))) + continue; + break; - case SILC_ATTRIBUTE_EXTENSION: - if (!silc_attribute_get_object(attr, (void *)&extension, - sizeof(extension))) - continue; - break; + case SILC_ATTRIBUTE_STATUS_MESSAGE: + if (!silc_attribute_get_object(attr, (void *)&message, + sizeof(message))) + continue; + break; + + case SILC_ATTRIBUTE_EXTENSION: + if (!silc_attribute_get_object(attr, (void *)&extension, + sizeof(extension))) + continue; + break; - case SILC_ATTRIBUTE_SERVER_PUBLIC_KEY: - if (serverpk.type) - continue; - if (!silc_attribute_get_object(attr, (void *)&serverpk, - sizeof(serverpk))) - continue; - break; + case SILC_ATTRIBUTE_SERVER_PUBLIC_KEY: + if (serverpk.type) + continue; + if (!silc_attribute_get_object(attr, (void *)&serverpk, + sizeof(serverpk))) + continue; + break; - case SILC_ATTRIBUTE_USER_DIGITAL_SIGNATURE: - if (usersign.data) - continue; - if (!silc_attribute_get_object(attr, (void *)&usersign, - sizeof(usersign))) - continue; - break; + case SILC_ATTRIBUTE_USER_DIGITAL_SIGNATURE: + if (usersign.data) + continue; + if (!silc_attribute_get_object(attr, (void *)&usersign, + sizeof(usersign))) + continue; + break; - case SILC_ATTRIBUTE_SERVER_DIGITAL_SIGNATURE: - if (serversign.data) - continue; - if (!silc_attribute_get_object(attr, (void *)&serversign, - sizeof(serversign))) - continue; - break; + case SILC_ATTRIBUTE_SERVER_DIGITAL_SIGNATURE: + if (serversign.data) + continue; + if (!silc_attribute_get_object(attr, (void *)&serversign, + sizeof(serversign))) + continue; + break; - default: - break; + default: + break; + } } }