--- a/libpurple/protocols/msn/slplink.c Sun Nov 21 08:47:08 2010 +0000 +++ b/libpurple/protocols/msn/slplink.c Sun Nov 21 09:56:48 2010 +0000 @@ -502,7 +502,6 @@ slpcall = msn_slp_process_msg(slplink, slpmsg); if (slpcall == NULL) { - msn_slpmsg_destroy(slpmsg); return; } @@ -541,8 +540,6 @@ } } - msn_slpmsg_destroy(slpmsg); - if (!slpcall->wait_for_socket && slpcall->wasted) msn_slpcall_destroy(slpcall); } @@ -625,6 +622,8 @@ /* All the pieces of the slpmsg have been received */ if (header->offset + header->length >= header->total_size) process_complete_msg(slplink, slpmsg, header); + + msn_slpmsg_destroy(slpmsg); } void