From e995b26b811df8ceb92158afdde7e7dd5fc5bef0 Mon Sep 17 00:00:00 2001 From: HanzZ Date: Wed, 5 Oct 2011 22:21:29 +0200 Subject: [PATCH] remove ft timer on xfer destruction --- backends/libpurple/main.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/backends/libpurple/main.cpp b/backends/libpurple/main.cpp index 74524ab6..c95c9c88 100644 --- a/backends/libpurple/main.cpp +++ b/backends/libpurple/main.cpp @@ -1361,7 +1361,6 @@ static void XferDestroyed(PurpleXfer *xfer) { static void xferCanceled(PurpleXfer *xfer) { PurpleAccount *account = purple_xfer_get_account(xfer); std::string filename(xfer ? purple_xfer_get_filename(xfer) : ""); - purple_xfer_ref(xfer); std::string w = xfer->who; size_t pos = w.find("/"); if (pos != std::string::npos) @@ -1371,6 +1370,9 @@ static void xferCanceled(PurpleXfer *xfer) { np->handleFTFinish(np->m_accounts[account], w, filename, purple_xfer_get_size(xfer), ftdata ? ftdata->id : 0); std::remove(np->m_waitingXfers.begin(), np->m_waitingXfers.end(), xfer); + if (ftdata && ftdata->timer) { + purple_timeout_remove(ftdata->timer); + } purple_xfer_unref(xfer); } @@ -1410,6 +1412,10 @@ static void XferReceiveComplete(PurpleXfer *xfer) { // repeater->_tryToDeleteMe(); // GlooxMessageHandler::instance()->ftManager->handleXferFileReceiveComplete(xfer); std::remove(np->m_waitingXfers.begin(), np->m_waitingXfers.end(), xfer); + FTData *ftdata = (FTData *) xfer->ui_data; + if (ftdata && ftdata->timer) { + purple_timeout_remove(ftdata->timer); + } purple_xfer_unref(xfer); } @@ -1417,6 +1423,10 @@ static void XferSendComplete(PurpleXfer *xfer) { // FiletransferRepeater *repeater = (FiletransferRepeater *) xfer->ui_data; // repeater->_tryToDeleteMe(); std::remove(np->m_waitingXfers.begin(), np->m_waitingXfers.end(), xfer); + FTData *ftdata = (FTData *) xfer->ui_data; + if (ftdata && ftdata->timer) { + purple_timeout_remove(ftdata->timer); + } purple_xfer_unref(xfer); }