From bead179970fa5cb65e4ce5ec0024ba7bd30a2986 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Fri, 11 Sep 2015 21:34:08 +0200 Subject: [PATCH] Add destructor to Kernel class to fix memleaks This for examples fixes leaks reported by valgrind --leak-check=full ./bin/pdal info --all ../test/data/las/simple.las --- include/pdal/Kernel.hpp | 3 +-- src/Kernel.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/include/pdal/Kernel.hpp b/include/pdal/Kernel.hpp index 9d418ae530..7683f9ebc9 100644 --- a/include/pdal/Kernel.hpp +++ b/include/pdal/Kernel.hpp @@ -72,8 +72,7 @@ typedef std::shared_ptr PointViewPtr; class PDAL_DLL Kernel { public: - virtual ~Kernel() - {} + virtual ~Kernel(); // call this, to start the machine int run(int argc, const char* argv[], const std::string& appName); diff --git a/src/Kernel.cpp b/src/Kernel.cpp index 7c516a273b..5e3108db4c 100644 --- a/src/Kernel.cpp +++ b/src/Kernel.cpp @@ -71,6 +71,18 @@ Kernel::Kernel() {} +Kernel::~Kernel() +{ + for (auto & iter : m_public_options) + { + delete iter; + } + for (auto & iter : m_hidden_options) + { + delete iter; + } +} + std::ostream& operator<<(std::ostream& ostr, const Kernel& kernel) { ostr << " Name: " << kernel.getName() << std::endl;