diff options
author | Tobias Markmann <tm@ayena.de> | 2015-06-30 07:02:01 (GMT) |
---|---|---|
committer | Kevin Smith <kevin.smith@isode.com> | 2015-07-07 19:58:12 (GMT) |
commit | 799a7ac203dc2576872894dfdd1adb5cdbbacf7b (patch) | |
tree | e0242decf49222b83674143cf04f61c3dc01bc35 /Swiften/FileTransfer/JingleFileTransfer.cpp | |
parent | abd96284e162b3594bd0fc90a5da6b78709dee23 (diff) | |
download | swift-799a7ac203dc2576872894dfdd1adb5cdbbacf7b.zip swift-799a7ac203dc2576872894dfdd1adb5cdbbacf7b.tar.bz2 |
Fix memory leaks reported by ASAN
Test-Information:
Tested on Elementary OS with a LLVM/Clang 3.7.0 build. With this patch
the reports for the fixed locations are gone.
Change-Id: I0260fc85ad662335a69ace331f51ebe2f864ef97
Diffstat (limited to 'Swiften/FileTransfer/JingleFileTransfer.cpp')
-rw-r--r-- | Swiften/FileTransfer/JingleFileTransfer.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/Swiften/FileTransfer/JingleFileTransfer.cpp b/Swiften/FileTransfer/JingleFileTransfer.cpp index dbc4391..cf67a67 100644 --- a/Swiften/FileTransfer/JingleFileTransfer.cpp +++ b/Swiften/FileTransfer/JingleFileTransfer.cpp @@ -5,19 +5,19 @@ */ #include <Swiften/FileTransfer/JingleFileTransfer.h> #include <boost/typeof/typeof.hpp> +#include <Swiften/Base/Log.h> #include <Swiften/Base/foreach.h> -#include <Swiften/JID/JID.h> #include <Swiften/Crypto/CryptoProvider.h> -#include <Swiften/StringCodecs/Hexify.h> -#include <Swiften/Jingle/JingleSession.h> #include <Swiften/FileTransfer/FileTransferTransporter.h> -#include <Swiften/Base/Log.h> +#include <Swiften/JID/JID.h> +#include <Swiften/Jingle/JingleSession.h> +#include <Swiften/StringCodecs/Hexify.h> using namespace Swift; JingleFileTransfer::JingleFileTransfer( boost::shared_ptr<JingleSession> session, const JID& target, @@ -210,15 +210,26 @@ void JingleFileTransfer::handleTransportInfoReceived( else { SWIFT_LOG(debug) << "Ignoring unknown info" << std::endl; } } void JingleFileTransfer::setTransporter(FileTransferTransporter* transporter) { + SWIFT_LOG_ASSERT(!this->transporter, error); this->transporter = transporter; localTransportCandidatesGeneratedConnection = transporter->onLocalCandidatesGenerated.connect( boost::bind(&JingleFileTransfer::handleLocalTransportCandidatesGenerated, this, _1, _2, _3)); remoteTransportCandidateSelectFinishedConnection = transporter->onRemoteCandidateSelectFinished.connect( boost::bind(&JingleFileTransfer::handleRemoteTransportCandidateSelectFinished, this, _1, _2)); proxyActivatedConnection = transporter->onProxyActivated.connect( boost::bind(&JingleFileTransfer::handleProxyActivateFinished, this, _1, _2)); } +void JingleFileTransfer::removeTransporter() { + if (transporter) { + localTransportCandidatesGeneratedConnection.release(); + remoteTransportCandidateSelectFinishedConnection.release(); + proxyActivatedConnection.release(); + delete transporter; + transporter = NULL; + } +} + |