From bde05b3d8b4be1dbeb9569d6a93e8bea7d74e53c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Thu, 17 May 2018 09:52:34 +0200 Subject: [PATCH] [escher] Fix layout count verification in ExprLayField::handleEvWText Change-Id: Ie56e61aa10c907c6ab0dac8814b9ed46aac669f8 --- escher/src/expression_layout_field.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/escher/src/expression_layout_field.cpp b/escher/src/expression_layout_field.cpp index 2f43ef404..255ee5653 100644 --- a/escher/src/expression_layout_field.cpp +++ b/escher/src/expression_layout_field.cpp @@ -215,7 +215,8 @@ int ExpressionLayoutField::writeTextInBuffer(char * buffer, int bufferLength) { } bool ExpressionLayoutField::handleEventWithText(const char * text, bool indentation) { - if (m_contentView.expressionView()->numberOfLayouts() >= k_maxNumberOfLayouts) { + int currentNumberOfLayouts = m_contentView.expressionView()->numberOfLayouts(); + if (currentNumberOfLayouts >= k_maxNumberOfLayouts) { return true; } Poincare::Expression * resultExpression = Poincare::Expression::parse(text); @@ -224,7 +225,7 @@ bool ExpressionLayoutField::handleEventWithText(const char * text, bool indentat } Poincare::ExpressionLayout * resultLayout = resultExpression->createLayout(); delete resultExpression; - if (resultLayout->numberOfDescendants(true) >= k_maxNumberOfLayouts) { + if (currentNumberOfLayouts + resultLayout->numberOfDescendants(true) >= k_maxNumberOfLayouts) { delete resultLayout; return false; }