From 56a6917cfd780612cba2c4b9e5d4009f89967cbb Mon Sep 17 00:00:00 2001 From: Hugo Saint-Vignes Date: Fri, 11 Dec 2020 14:17:03 +0100 Subject: [PATCH] [apps/shared] Fix context pointer when sorting rows --- apps/shared/store_parameter_controller.cpp | 5 +++-- apps/shared/store_parameter_controller.h | 5 ++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/apps/shared/store_parameter_controller.cpp b/apps/shared/store_parameter_controller.cpp index 50212fee2..97bfc3b55 100644 --- a/apps/shared/store_parameter_controller.cpp +++ b/apps/shared/store_parameter_controller.cpp @@ -82,10 +82,11 @@ bool StoreParameterController::handleEvent(Ion::Events::Event event) { double * contextBOtherColumn = (static_cast(context) + DoublePairStore::k_maxNumberOfPairs + b); return *contextAOtherColumn > *contextBOtherColumn; }; + double * seriesContext = m_store->data() + m_series * DoublePairStore::k_numberOfColumnsPerSeries * DoublePairStore::k_maxNumberOfPairs; if (m_xColumnSelected) { - Poincare::Helpers::Sort(swapRows, compareX, (m_store->data() + m_series), m_store->numberOfPairsOfSeries(m_series)); + Poincare::Helpers::Sort(swapRows, compareX, seriesContext, m_store->numberOfPairsOfSeries(m_series)); } else { - Poincare::Helpers::Sort(swapRows, compareY, (m_store->data() + m_series), m_store->numberOfPairsOfSeries(m_series)); + Poincare::Helpers::Sort(swapRows, compareY, seriesContext, m_store->numberOfPairsOfSeries(m_series)); } break; } diff --git a/apps/shared/store_parameter_controller.h b/apps/shared/store_parameter_controller.h index 3198b5239..efc8c6f12 100644 --- a/apps/shared/store_parameter_controller.h +++ b/apps/shared/store_parameter_controller.h @@ -13,7 +13,10 @@ class StoreParameterController : public ViewController, public ListViewDataSourc public: StoreParameterController(Responder * parentResponder, DoublePairStore * store, StoreController * storeController); void selectXColumn(bool xColumnSelected) { m_xColumnSelected = xColumnSelected; } - void selectSeries(int series) { m_series = series; } + void selectSeries(int series) { + assert(series >= 0 && series < DoublePairStore::k_numberOfSeries); + m_series = series; + } View * view() override { return &m_selectableTableView; } void willDisplayCellForIndex(HighlightCell * cell, int index) override; const char * title() override;