Mercurial > pidgin.yaz
changeset 9133:c42c3ac3466e
[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 <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Sun, 30 May 2004 20:53:02 +0000 |
parents | 9c1358090c6f |
children | 6d7bb1274755 |
files | ChangeLog src/protocols/silc/buddy.c |
diffstat | 2 files changed, 49 insertions(+), 45 deletions(-) [+] |
line wrap: on
line diff
--- 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:
--- 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; + } } }