From 5e860bc0f5e4a1fcd4b36fb12d7ccf7888a21007 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Thu, 4 Oct 2018 11:37:30 +0200 Subject: [PATCH] [apps] Handle uninitialized expression and layout in ExpressionModel --- apps/shared/storage_expression_model.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/apps/shared/storage_expression_model.cpp b/apps/shared/storage_expression_model.cpp index e61de68e2..7c8ab8147 100644 --- a/apps/shared/storage_expression_model.cpp +++ b/apps/shared/storage_expression_model.cpp @@ -1,5 +1,6 @@ #include "storage_expression_model.h" #include "poincare_helpers.h" +#include #include #include #include @@ -29,7 +30,12 @@ void StorageExpressionModel::destroy() { } void StorageExpressionModel::text(char * buffer, size_t bufferSize) const { - expression().serialize(buffer, bufferSize); + Expression e = expression(); + if (e.isUninitialized() && bufferSize > 0) { + buffer[0] = 0; + } else { + e.serialize(buffer, bufferSize); + } } Expression StorageExpressionModel::expression() const { @@ -46,6 +52,9 @@ Expression StorageExpressionModel::reducedExpression(Poincare::Context * context Layout StorageExpressionModel::layout() { if (m_layout.isUninitialized()) { m_layout = PoincareHelpers::CreateLayout(expression()); + if (m_layout.isUninitialized()) { + m_layout = HorizontalLayout(); + } } return m_layout; }