diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2013-10-05 11:53:20 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2013-10-05 11:53:20 +0000 |
commit | 5ccfef6a1d9a5d3fcea56d8900dd35931c793484 (patch) | |
tree | 21e410c5905a7cc012946c76d54cede5bbaa2027 /tools | |
parent | beb6afa84397a27e48a9d72ac1d588bc6fcaf564 (diff) | |
download | external_llvm-5ccfef6a1d9a5d3fcea56d8900dd35931c793484.zip external_llvm-5ccfef6a1d9a5d3fcea56d8900dd35931c793484.tar.gz external_llvm-5ccfef6a1d9a5d3fcea56d8900dd35931c793484.tar.bz2 |
lli: Plug leaks in the remote target external implementation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192031 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r-- | tools/lli/ChildTarget/ChildTarget.cpp | 1 | ||||
-rw-r--r-- | tools/lli/ChildTarget/Unix/ChildTarget.inc | 4 | ||||
-rw-r--r-- | tools/lli/ChildTarget/Windows/ChildTarget.inc | 3 | ||||
-rw-r--r-- | tools/lli/RemoteTargetExternal.h | 2 | ||||
-rw-r--r-- | tools/lli/Unix/RemoteTargetExternal.inc | 4 | ||||
-rw-r--r-- | tools/lli/Windows/RemoteTargetExternal.inc | 3 |
6 files changed, 16 insertions, 1 deletions
diff --git a/tools/lli/ChildTarget/ChildTarget.cpp b/tools/lli/ChildTarget/ChildTarget.cpp index a59209a..55fcae9 100644 --- a/tools/lli/ChildTarget/ChildTarget.cpp +++ b/tools/lli/ChildTarget/ChildTarget.cpp @@ -11,6 +11,7 @@ using namespace llvm; class LLIChildTarget { public: + ~LLIChildTarget(); // OS-specific destructor void initialize(); LLIMessageType waitForIncomingMessage(); void handleMessage(LLIMessageType messageType); diff --git a/tools/lli/ChildTarget/Unix/ChildTarget.inc b/tools/lli/ChildTarget/Unix/ChildTarget.inc index cd42f34..cc95810 100644 --- a/tools/lli/ChildTarget/Unix/ChildTarget.inc +++ b/tools/lli/ChildTarget/Unix/ChildTarget.inc @@ -49,6 +49,10 @@ struct ConnectionData_t { } // namespace +LLIChildTarget::~LLIChildTarget() { + delete static_cast<ConnectionData_t *>(ConnectionData); +} + // OS-specific methods void LLIChildTarget::initializeConnection() { // Store the parent ends of the pipes diff --git a/tools/lli/ChildTarget/Windows/ChildTarget.inc b/tools/lli/ChildTarget/Windows/ChildTarget.inc index bb95aff..45db2b0 100644 --- a/tools/lli/ChildTarget/Windows/ChildTarget.inc +++ b/tools/lli/ChildTarget/Windows/ChildTarget.inc @@ -12,6 +12,9 @@ // //===----------------------------------------------------------------------===// +LLIChildTarget::~LLIChildTarget() { +} + // The RemoteTargetExternal implementation should prevent us from ever getting // here on Windows, but nothing prevents a user from running this directly. void LLIChildTarget::initializeConnection() { diff --git a/tools/lli/RemoteTargetExternal.h b/tools/lli/RemoteTargetExternal.h index 9a3644a..a4bfad2 100644 --- a/tools/lli/RemoteTargetExternal.h +++ b/tools/lli/RemoteTargetExternal.h @@ -88,7 +88,7 @@ public: virtual void stop(); RemoteTargetExternal(std::string &Name) : RemoteTarget(), ChildName(Name) {} - virtual ~RemoteTargetExternal() {} + virtual ~RemoteTargetExternal(); private: std::string ChildName; diff --git a/tools/lli/Unix/RemoteTargetExternal.inc b/tools/lli/Unix/RemoteTargetExternal.inc index e245f7e..9c1a4cc 100644 --- a/tools/lli/Unix/RemoteTargetExternal.inc +++ b/tools/lli/Unix/RemoteTargetExternal.inc @@ -89,4 +89,8 @@ void RemoteTargetExternal::Wait() { wait(NULL); } +RemoteTargetExternal::~RemoteTargetExternal() { + delete static_cast<ConnectionData_t *>(ConnectionData); +} + } // namespace llvm diff --git a/tools/lli/Windows/RemoteTargetExternal.inc b/tools/lli/Windows/RemoteTargetExternal.inc index 6536d99..aef4627 100644 --- a/tools/lli/Windows/RemoteTargetExternal.inc +++ b/tools/lli/Windows/RemoteTargetExternal.inc @@ -29,4 +29,7 @@ int RemoteTargetExternal::ReadBytes(void *Data, size_t Size) { void RemoteTargetExternal::Wait() { } +RemoteTargetExternal::~RemoteTargetExternal() { +} + } // namespace llvm |