From 6c05717b4caa1ab5c3fa3e5f84682153ad93ff09 Mon Sep 17 00:00:00 2001 From: Gagan Goel Date: Thu, 11 Jun 2020 19:21:11 -0400 Subject: [PATCH] MCOL-4043 Fix memory leaks - 2 Perform deletes of Compare objects in the OrderByData dtor, which were allocated by CompareRule::compileRules(). --- utils/windowfunction/idborderby.cpp | 18 ++++++++++++++++++ utils/windowfunction/idborderby.h | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/utils/windowfunction/idborderby.cpp b/utils/windowfunction/idborderby.cpp index 58440de14..cb37796a6 100644 --- a/utils/windowfunction/idborderby.cpp +++ b/utils/windowfunction/idborderby.cpp @@ -693,6 +693,24 @@ OrderByData::OrderByData(const std::vector& spec, const rowgroup::R } +// OrderByData class dtor +OrderByData::~OrderByData() +{ + // delete compare objects + vector::iterator i = fRule.fCompares.begin(); + + while (i != fRule.fCompares.end()) + { + if (*i) + { + delete *i; + *i = NULL; + } + i++; + } +} + + // IdbOrderBy class implementation IdbOrderBy::IdbOrderBy() : fDistinct(false), fMemSize(0), fRowsPerRG(rowgroup::rgCommonSize), diff --git a/utils/windowfunction/idborderby.h b/utils/windowfunction/idborderby.h index dc7ccef28..98dce4b59 100644 --- a/utils/windowfunction/idborderby.h +++ b/utils/windowfunction/idborderby.h @@ -338,7 +338,7 @@ class OrderByData : public IdbCompare { public: OrderByData(const std::vector&, const rowgroup::RowGroup&); - virtual ~OrderByData() {}; + virtual ~OrderByData(); bool operator() (rowgroup::Row::Pointer p1, rowgroup::Row::Pointer p2) {