pidgin: 46f6d47a: Make sure we free myspace buddy proto_da...
Paul Aurich
paul at darkrain42.org
Thu Feb 4 21:31:43 EST 2010
On Feb 4, 2010, at 14:45, markdoliner at pidgin.im wrote:
> ChangeLog:
>
> Make sure we free myspace buddy proto_data when we disconnect. I believe
> this fixes a memory leak and a crash when signing off while we're fetching
> a buddy icon
>
> ============================================================
> --- libpurple/protocols/myspace/myspace.c ec7093319f8188f3a234ea37d53ee67ec7d214b5
> +++ libpurple/protocols/myspace/myspace.c 24dfb0496390d036c339df25aa402469a76051b3
<snip/>
> @@ -2272,8 +2279,20 @@ msim_close(PurpleConnection *gc)
> static void
> msim_close(PurpleConnection *gc)
> {
> + GSList *buddies;
> MsimSession *session;
>
> + /*
> + * Free our protocol-specific buddy data. It almost seems like libpurple
> + * should call our buddy_free prpl callback so that we don't need to do
> + * this... but it doesn't, so we do.
> + */
> + buddies = purple_blist_get_buddies();
> + while (buddies != NULL) {
> + msim_buddy_free(buddies->data);
> + buddies = g_slist_delete_link(buddies, buddies);
> + }
> +
Isn't this going to fail catastrophically if a libpurple instance has more than one account signed on? (purple_blist_get_buddies is every buddy on the buddy list). Wouldn't purple_find_buddies(purple_connection_get_account(gc), NULL) be more appropriate?
~Paul
More information about the Devel
mailing list