From 9d44023453094832ada2770941e9e4c96ce0e75e Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Thu, 11 Mar 2010 18:04:49 +0000 Subject: [PATCH] Driver: Free jobs in JobList and PipedJob instances. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98261 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Driver/Job.h | 4 ++++ lib/Driver/Job.cpp | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/include/clang/Driver/Job.h b/include/clang/Driver/Job.h index 74ca083417..5a789fbb8f 100644 --- a/include/clang/Driver/Job.h +++ b/include/clang/Driver/Job.h @@ -100,7 +100,9 @@ private: public: PipedJob(); + virtual ~PipedJob(); + /// Add a command to the piped job (taking ownership). void addCommand(Command *C) { Commands.push_back(C); } const list_type &getCommands() const { return Commands; } @@ -130,7 +132,9 @@ private: public: JobList(); + virtual ~JobList(); + /// Add a job to the list (taking ownership). void addJob(Job *J) { Jobs.push_back(J); } const list_type &getJobs() const { return Jobs; } diff --git a/lib/Driver/Job.cpp b/lib/Driver/Job.cpp index 1bd123e220..bfeb41a942 100644 --- a/lib/Driver/Job.cpp +++ b/lib/Driver/Job.cpp @@ -23,8 +23,18 @@ Command::Command(const Action &_Source, const Tool &_Creator, PipedJob::PipedJob() : Job(PipedJobClass) {} +PipedJob::~PipedJob() { + for (iterator it = begin(), ie = end(); it != ie; ++it) + delete *it; +} + JobList::JobList() : Job(JobListClass) {} +JobList::~JobList() { + for (iterator it = begin(), ie = end(); it != ie; ++it) + delete *it; +} + void Job::addCommand(Command *C) { if (PipedJob *PJ = dyn_cast(this)) PJ->addCommand(C); -- 2.40.0