From 557c29fd462a7bc7f276d3603b6359e9e2e7f8ea Mon Sep 17 00:00:00 2001 From: Felipe Zimmerle Date: Fri, 6 Jan 2017 10:58:54 -0300 Subject: [PATCH] Changes variables destructor to virtual Avoid memory leak while destroying the Variable objects. --- src/variables/variable.h | 1 + src/variables/variations/count.h | 1 + src/variables/variations/exclusion.h | 2 ++ 3 files changed, 4 insertions(+) diff --git a/src/variables/variable.h b/src/variables/variable.h index a625a994..bd354b0c 100644 --- a/src/variables/variable.h +++ b/src/variables/variable.h @@ -64,6 +64,7 @@ class Variable { explicit Variable(std::string _name); Variable(std::string name, VariableKind kind); + virtual ~Variable() { } static std::string to_s(std::vector *variables); diff --git a/src/variables/variations/count.h b/src/variables/variations/count.h index 34eb9a5d..97ffbfa4 100644 --- a/src/variables/variations/count.h +++ b/src/variables/variations/count.h @@ -34,6 +34,7 @@ class Count : public Variable { explicit Count(Variable *v) : Variable("count(" + v->m_name + ")"), var(v) { } + virtual ~Count() { delete var; } void evaluateInternal(Transaction *transaction, std::vector *l) override; diff --git a/src/variables/variations/exclusion.h b/src/variables/variations/exclusion.h index fc3d0bc8..bb1faa1a 100644 --- a/src/variables/variations/exclusion.h +++ b/src/variables/variations/exclusion.h @@ -37,6 +37,8 @@ class Exclusion : public Variable { var(v) { m_isExclusion = true; } + virtual ~Exclusion() { delete var; } + void evaluateInternal(Transaction *transaction, std::vector *l) override;