[apps/stat/reg] Fix memory leak in Store Context

This commit is contained in:
Léa Saviot
2018-06-12 10:54:26 +02:00
parent c24e2726fa
commit afd81ebd10
3 changed files with 9 additions and 11 deletions

View File

@@ -1,5 +1,4 @@
#include "regression_context.h"
#include <poincare/decimal.h>
#include <assert.h>
#include <string.h>
@@ -21,10 +20,8 @@ const Expression * RegressionContext::expressionForSymbol(const Symbol * symbol)
assert(m_seriesPairIndex >= 0);
assert(m_seriesPairIndex < m_store->numberOfPairsOfSeries(series));
Expression * result = new Decimal(m_store->get(series, storeI, m_seriesPairIndex));
assert(result != nullptr);
return result;
m_value = Complex<double>::Float(m_store->get(series, storeI, m_seriesPairIndex));
return &m_value;
} else {
return m_parentContext->expressionForSymbol(symbol);
}

View File

@@ -2,7 +2,9 @@
#define SHARED_STORE_CONTEXT_H
#include <poincare/context.h>
#include <poincare/complex.h>
#include "double_pair_store.h"
#include <cmath>
namespace Shared {
@@ -12,7 +14,8 @@ public:
Poincare::Context(),
m_store(store),
m_seriesPairIndex(-1),
m_parentContext(nullptr)
m_parentContext(nullptr),
m_value(Poincare::Complex<double>::Float(NAN))
{}
void setParentContext(Poincare::Context * parentContext) { m_parentContext = parentContext; }
void setSeriesPairIndex(int j) { m_seriesPairIndex = j; }
@@ -21,6 +24,7 @@ protected:
Shared::DoublePairStore * m_store;
int m_seriesPairIndex;
Poincare::Context * m_parentContext;
Poincare::Complex<double> m_value;
};
}

View File

@@ -1,5 +1,4 @@
#include "statistics_context.h"
#include <poincare/decimal.h>
#include <assert.h>
#include <string.h>
@@ -21,10 +20,8 @@ const Expression * StatisticsContext::expressionForSymbol(const Symbol * symbol)
assert(m_seriesPairIndex >= 0);
assert(m_seriesPairIndex < m_store->numberOfPairsOfSeries(series));
Expression * result = new Decimal(m_store->get(series, storeI, m_seriesPairIndex));
assert(result != nullptr);
return result;
m_value = Complex<double>::Float(m_store->get(series, storeI, m_seriesPairIndex));
return &m_value;
} else {
return m_parentContext->expressionForSymbol(symbol);
}