# HG changeset patch # User Sadrul Habib Chowdhury # Date 1230781646 0 # Node ID cb274396158c32fd739c64ddbb38b927f26e455a # Parent 647684cdbbac3ff550c54393e3ced520dcef3503# Parent c6cadb7bdcf755a13872b3d12b3e797d5937b9f8 merge of '409aaedc8836828692279141224e2077ffd4a80f' and '90a5f93a4d969a242378420c9e060c5d49e35917' diff -r 647684cdbbac -r cb274396158c libpurple/protocols/myspace/myspace.c --- a/libpurple/protocols/myspace/myspace.c Thu Jan 01 03:09:10 2009 +0000 +++ b/libpurple/protocols/myspace/myspace.c Thu Jan 01 03:47:26 2009 +0000 @@ -211,7 +211,6 @@ /* Don't have uid offhand - need to ask for it, and wait until hear back before sending. */ purple_debug_info("msim", ">>> msim_postprocess_outgoing: couldn't find username %s in blist\n", username ? username : "(NULL)"); - /* TODO: where is cloned message freed? Should be in _cb. */ msim_lookup_user(session, username, msim_postprocess_outgoing_cb, msim_msg_clone(msg)); return TRUE; /* not sure of status yet - haven't sent! */ } @@ -1923,8 +1922,7 @@ msim_process(session, msg); - /* TODO: Free copy cloned from msim_preprocess_incoming(). */ - /* msim_msg_free(msg); */ + msim_msg_free(msg); msim_msg_free(body); } @@ -2731,9 +2729,15 @@ * doesn't seem like it would be necessary, but the official client * does it) */ - if (!msim_update_blocklist_for_buddy(session, buddy->name, FALSE, FALSE)) + if (!msim_update_blocklist_for_buddy(session, buddy->name, FALSE, FALSE)) { purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("blocklist command failed")); + return; + } + if (buddy->proto_data) { + msim_user_free(buddy->proto_data); + buddy->proto_data = NULL; + } } /** @@ -2823,6 +2827,13 @@ msim_update_blocklist_for_buddy(session, name, FALSE, FALSE); } +static void +msim_buddy_free(PurpleBuddy *buddy) +{ + msim_user_free(buddy->proto_data); + buddy->proto_data = NULL; +} + /** * Returns a string of a username in canonical form. Basically removes all the * spaces, lowercases the string, and looks up user IDs to usernames. @@ -3039,7 +3050,7 @@ NULL, /* alias_buddy */ NULL, /* group_buddy */ NULL, /* rename_group */ - NULL, /* buddy_free */ + msim_buddy_free, /* buddy_free */ NULL, /* convo_closed */ msim_normalize, /* normalize */ NULL, /* set_buddy_icon */ diff -r 647684cdbbac -r cb274396158c libpurple/protocols/myspace/user.c --- a/libpurple/protocols/myspace/user.c Thu Jan 01 03:09:10 2009 +0000 +++ b/libpurple/protocols/myspace/user.c Thu Jan 01 03:47:26 2009 +0000 @@ -55,10 +55,9 @@ if (!buddy->proto_data) { /* No MsimUser for this buddy; make one. */ - /* TODO: where is this freed? */ user = g_new0(MsimUser, 1); user->buddy = buddy; - user->id = purple_blist_node_get_int(&buddy->node, "UserID"); + user->id = purple_blist_node_get_int((PurpleBlistNode*)buddy, "UserID"); buddy->proto_data = (gpointer)user; } @@ -67,6 +66,23 @@ return user; } +void msim_user_free(MsimUser *user) +{ + if (!user) + return; + + g_free(user->client_info); + g_free(user->gender); + g_free(user->location); + g_free(user->headline); + g_free(user->display_name); + g_free(user->username); + g_free(user->band_name); + g_free(user->song_name); + g_free(user->image_url); + g_free(user); +} + /** * Find and return an MsimUser * representing a user on the buddy list, or NULL. */ diff -r 647684cdbbac -r cb274396158c libpurple/protocols/myspace/user.h --- a/libpurple/protocols/myspace/user.h Thu Jan 01 03:09:10 2009 +0000 +++ b/libpurple/protocols/myspace/user.h Thu Jan 01 03:47:26 2009 +0000 @@ -47,6 +47,7 @@ typedef void (*MSIM_USER_LOOKUP_CB)(MsimSession *session, const MsimMessage *userinfo, gpointer data); MsimUser *msim_get_user_from_buddy(PurpleBuddy *buddy); +void msim_user_free(MsimUser *user); MsimUser *msim_find_user(MsimSession *session, const gchar *username); void msim_append_user_info(MsimSession *session, PurpleNotifyUserInfo *user_info, MsimUser *user, gboolean full); gboolean msim_store_user_info(MsimSession *session, const MsimMessage *msg, MsimUser *user);