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