--- a/libpurple/protocols/msn/notification.c Fri Oct 09 17:33:16 2009 +0000 +++ b/libpurple/protocols/msn/notification.c Fri Oct 09 18:01:51 2009 +0000 @@ -582,7 +582,8 @@ trans = msn_transaction_new(cmdproc, "FQY", "%d", payload_len); msn_transaction_set_payload(trans, payload, payload_len); - msn_transaction_set_data(trans, data); /* XXX: 'data' leaks */ + msn_transaction_set_data(trans, data); + msn_transaction_set_data_free(trans, g_free); msn_cmdproc_send_trans(cmdproc, trans); } @@ -962,9 +963,8 @@ if (cmd->trans->data) { MsnFqyCbData *fqy_data = cmd->trans->data; fqy_data->cb(session, passport, network, fqy_data->data); - /* TODO: This leaks, but the server responds to FQY multiple times, so we - can't free it yet. We need to figure out somewhere else to do so. - g_free(fqy_data); */ + /* Don't free fqy_data yet since the server responds to FQY multipe times. + It will be freed when cmd->trans is freed. */ } g_free(passport);