# HG changeset patch # User Mark Doliner # Date 1290411623 0 # Node ID b4285ea42b6efad66612b16a734b99654dcca129 # Parent a328691c761a993661dfaa8e0ad47597612c8836 msn_message_destroy() calls msn_message_unref() if refcount>0. This is always the case. So change all code to call msn_message_unref() directly and change msn_message_destroy to be a private function. This should be more clear. diff -r a328691c761a -r b4285ea42b6e libpurple/protocols/msn/msg.c --- a/libpurple/protocols/msn/msg.c Mon Nov 22 07:32:57 2010 +0000 +++ b/libpurple/protocols/msn/msg.c Mon Nov 22 07:40:23 2010 +0000 @@ -50,18 +50,16 @@ return msg; } -void +/** + * Destroys a message. + * + * @param msg The message to destroy. + */ +static void msn_message_destroy(MsnMessage *msg) { g_return_if_fail(msg != NULL); - if (msg->ref_count > 0) - { - msn_message_unref(msg); - - return; - } - if (purple_debug_is_verbose()) purple_debug_info("msn", "message destroy (%p)\n", msg); @@ -1224,7 +1222,7 @@ g_free(text); msn_switchboard_send_msg(swboard, cancel, TRUE); - msn_message_destroy(cancel); + msn_message_unref(cancel); } } else if (!strcmp(command, "CANCEL")) { diff -r a328691c761a -r b4285ea42b6e libpurple/protocols/msn/msg.h --- a/libpurple/protocols/msn/msg.h Mon Nov 22 07:32:57 2010 +0000 +++ b/libpurple/protocols/msn/msg.h Mon Nov 22 07:40:23 2010 +0000 @@ -171,13 +171,6 @@ const char *line_dem,const char *body_dem); /** - * Destroys a message. - * - * @param msg The message to destroy. - */ -void msn_message_destroy(MsnMessage *msg); - -/** * Increments the reference count on a message. * * @param msg The message. diff -r a328691c761a -r b4285ea42b6e libpurple/protocols/msn/msn.c --- a/libpurple/protocols/msn/msn.c Mon Nov 22 07:32:57 2010 +0000 +++ b/libpurple/protocols/msn/msn.c Mon Nov 22 07:40:23 2010 +0000 @@ -132,7 +132,7 @@ swboard = msn_session_get_swboard(session, username, MSN_SB_FLAG_IM); msn_switchboard_send_msg(swboard, msg, TRUE); - msn_message_destroy(msg); + msn_message_unref(msg); return TRUE; } @@ -1393,7 +1393,7 @@ msn_message_set_bin_data(msg, body->str, body->len); msn_switchboard_send_msg(swboard, msg, TRUE); - msn_message_destroy(msg); + msn_message_unref(msg); } static void msn_emoticon_destroy(MsnEmoticon *emoticon) @@ -1582,7 +1582,7 @@ purple_timeout_add(0, msn_send_me_im, imdata); } - msn_message_destroy(msg); + msn_message_unref(msg); } else { /*send Offline Instant Message,only to MSN Passport User*/ char *friendname; @@ -1646,7 +1646,7 @@ msn_switchboard_send_msg(swboard, msg, FALSE); - msn_message_destroy(msg); + msn_message_unref(msg); return MSN_TYPING_SEND_TIMEOUT; } @@ -2072,7 +2072,7 @@ } msn_switchboard_send_msg(swboard, msg, FALSE); - msn_message_destroy(msg); + msn_message_unref(msg); g_free(msgformat); g_free(msgtext); diff -r a328691c761a -r b4285ea42b6e libpurple/protocols/msn/notification.c --- a/libpurple/protocols/msn/notification.c Mon Nov 22 07:32:57 2010 +0000 +++ b/libpurple/protocols/msn/notification.c Mon Nov 22 07:40:23 2010 +0000 @@ -332,7 +332,7 @@ msn_cmdproc_process_msg(cmdproc, msg); - msn_message_destroy(msg); + msn_message_unref(msg); } static void @@ -1210,7 +1210,7 @@ g_free(body_str); g_free(body_enc); - msn_message_destroy(msg); + msn_message_unref(msg); trans->data = NULL; } } diff -r a328691c761a -r b4285ea42b6e libpurple/protocols/msn/oim.c --- a/libpurple/protocols/msn/oim.c Mon Nov 22 07:32:57 2010 +0000 +++ b/libpurple/protocols/msn/oim.c Mon Nov 22 07:40:23 2010 +0000 @@ -641,10 +641,10 @@ type = msn_message_get_content_type(multipart); if (type && !strcmp(type, "text/plain")) { decode_msg = (char *)purple_base64_decode(multipart->body, &body_len); - msn_message_destroy(multipart); + msn_message_unref(multipart); break; } - msn_message_destroy(multipart); + msn_message_unref(multipart); } g_strfreev(tokens); @@ -652,7 +652,7 @@ if (decode_msg == NULL) { purple_debug_error("msn", "Couldn't find text/plain OIM message.\n"); - msn_message_destroy(message); + msn_message_unref(message); return; } } else { @@ -708,7 +708,7 @@ g_free(passport); g_free(decode_msg); - msn_message_destroy(message); + msn_message_unref(message); } /* Parse the XML data, diff -r a328691c761a -r b4285ea42b6e libpurple/protocols/msn/sbconn.c --- a/libpurple/protocols/msn/sbconn.c Mon Nov 22 07:32:57 2010 +0000 +++ b/libpurple/protocols/msn/sbconn.c Mon Nov 22 07:40:23 2010 +0000 @@ -33,7 +33,7 @@ } msn_switchboard_send_msg(slplink->swboard, msg, TRUE); - msn_message_destroy(msg); + msn_message_unref(msg); } /** Called when a message times out. */ diff -r a328691c761a -r b4285ea42b6e libpurple/protocols/msn/switchboard.c --- a/libpurple/protocols/msn/switchboard.c Mon Nov 22 07:32:57 2010 +0000 +++ b/libpurple/protocols/msn/switchboard.c Mon Nov 22 07:40:23 2010 +0000 @@ -225,7 +225,7 @@ msn_switchboard_send_msg(swboard, msg, TRUE); - msn_message_destroy(msg); + msn_message_unref(msg); } static void