From c4beb5ec63f58d97ec00ec22e45b16979cee8ad6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Thu, 30 Jan 2020 11:34:21 +0100 Subject: [PATCH] [apps/solver] Fix x10 display in approximate solutions Scenario: Solve the equation cos(x) = 10 between -1000 and 1000, the x10 solution was badly displayed. --- apps/solver/solutions_controller.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/solver/solutions_controller.cpp b/apps/solver/solutions_controller.cpp index 67b439966..8a3d11fa8 100644 --- a/apps/solver/solutions_controller.cpp +++ b/apps/solver/solutions_controller.cpp @@ -186,7 +186,7 @@ void SolutionsController::willDisplayCellAtLocation(HighlightCell * cell, int i, deltaCell->setLayout(m_delta2Layout); } else { EvenOddBufferTextCell * symbolCell = static_cast(cell); - char bufferSymbol[Poincare::SymbolAbstract::k_maxNameSize+1]; // Holds at maximum the variable name + a digit + char bufferSymbol[Poincare::SymbolAbstract::k_maxNameSize+2]; // Holds at maximum the variable name + 2 digits (for 10) if (rowOfUserVariablesMessage < 0 || j < rowOfUserVariablesMessage) { // Solution symbol name if (m_equationStore->type() == EquationStore::Type::LinearSystem) { @@ -197,7 +197,13 @@ void SolutionsController::willDisplayCellAtLocation(HighlightCell * cell, int i, /* The system has one variable but might have many solutions: the cell * text is variableX, with X the row index + 1 (e.g. x1, x2,...) */ int length = strlcpy(bufferSymbol, m_equationStore->variableAtIndex(0), Poincare::SymbolAbstract::k_maxNameSize); - bufferSymbol[length++] = j+'1'; // TODO LEA change for 10 + if (j < 9) { + bufferSymbol[length++] = j+'1'; + } else { + assert(j == 9); + bufferSymbol[length++] = '1'; + bufferSymbol[length++] = '0'; + } bufferSymbol[length] = 0; } } else {