Mercurial > pidgin
diff libpurple/protocols/bonjour/buddy.c @ 23092:2a81912c229a
Some fixes from Eion Robb and me to prevent bonjour crashes with the newly
available offline buddies. Fixes #5873.
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Thu, 22 May 2008 21:38:06 +0000 |
parents | d50194ab3016 |
children | fe7504f465a2 16734635febf |
line wrap: on
line diff
--- a/libpurple/protocols/bonjour/buddy.c Thu May 22 20:24:19 2008 +0000 +++ b/libpurple/protocols/bonjour/buddy.c Thu May 22 21:38:06 2008 +0000 @@ -156,9 +156,9 @@ purple_blist_node_set_flags((PurpleBlistNode *)buddy, PURPLE_BLIST_NODE_FLAG_NO_SAVE); purple_blist_add_buddy(buddy, NULL, group, NULL); } - + buddy->proto_data = bonjour_buddy; - + /* Create the alias for the buddy using the first and the last name */ if (bonjour_buddy->nick) serv_got_alias(purple_account_get_connection(account), buddy->name, bonjour_buddy->nick); @@ -206,10 +206,12 @@ * If the buddy is being saved, mark as offline, otherwise delete */ void bonjour_buddy_signed_off(PurpleBuddy *pb) { - if (PURPLE_BLIST_NODE_SHOULD_SAVE(pb)) + if (PURPLE_BLIST_NODE_SHOULD_SAVE(pb)) { purple_prpl_got_user_status(purple_buddy_get_account(pb), purple_buddy_get_name(pb), "offline", NULL); - else { + bonjour_buddy_delete(pb->proto_data); + pb->proto_data = NULL; + } else { purple_account_remove_buddy(purple_buddy_get_account(pb), pb, NULL); purple_blist_remove_buddy(pb); }