diff --git a/poincare/include/poincare/evaluation.h b/poincare/include/poincare/evaluation.h index e5a426e9f..48c750c26 100644 --- a/poincare/include/poincare/evaluation.h +++ b/poincare/include/poincare/evaluation.h @@ -37,7 +37,7 @@ template class Evaluation : public TreeByValue { public: EvaluationNode * node() const override { - assert(!TreeByValue::node()->isGhost()); + assert(TreeByValue::node() == nullptr || !TreeByValue::node()->isGhost()); return static_cast *>(TreeByValue::node()); } Evaluation() : Evaluation(nullptr) {} diff --git a/poincare/include/poincare/expression.h b/poincare/include/poincare/expression.h index f4625021e..e64b6426b 100644 --- a/poincare/include/poincare/expression.h +++ b/poincare/include/poincare/expression.h @@ -34,7 +34,7 @@ public: /* Reference */ ExpressionNode * node() const override { - assert(!TreeByValue::node()->isGhost()); + assert(TreeByValue::node() == nullptr || !TreeByValue::node()->isGhost()); return static_cast(TreeByValue::node()); } diff --git a/poincare/include/poincare/layout_reference.h b/poincare/include/poincare/layout_reference.h index 1717fd312..baf74f221 100644 --- a/poincare/include/poincare/layout_reference.h +++ b/poincare/include/poincare/layout_reference.h @@ -29,7 +29,7 @@ public: } LayoutNode * node() const override { - assert(!TreeByReference::node()->isGhost()); + assert(TreeByReference::node() == nullptr || !TreeByReference::node()->isGhost()); return static_cast(TreeByReference::node()); } diff --git a/poincare/include/poincare/tree_by_reference.h b/poincare/include/poincare/tree_by_reference.h index 623a09e14..b4ce0f426 100644 --- a/poincare/include/poincare/tree_by_reference.h +++ b/poincare/include/poincare/tree_by_reference.h @@ -117,7 +117,9 @@ protected: TreeByReference() : m_identifier(-1) {} void setIdentifierAndRetain(int newId) { m_identifier = newId; - node()->retain(); + if (isDefined()) { + node()->retain(); + } } /* Hierarchy operations */ // Add