diff --git a/poincare/include/poincare/tree_handle.h b/poincare/include/poincare/tree_handle.h index f9e58440b..87b6ade6d 100644 --- a/poincare/include/poincare/tree_handle.h +++ b/poincare/include/poincare/tree_handle.h @@ -107,6 +107,8 @@ protected: void setIdentifierAndRetain(int newId); void setTo(const TreeHandle & tr); + static bool hasNode(int identifier) { return identifier > TreeNode::NoNodeIdentifier; } + /* Hierarchy operations */ // Add void addChildAtIndexInPlace(TreeHandle t, int index, int currentNumberOfChildren); diff --git a/poincare/src/tree_handle.cpp b/poincare/src/tree_handle.cpp index e4eaba5ed..1ae1abe60 100644 --- a/poincare/src/tree_handle.cpp +++ b/poincare/src/tree_handle.cpp @@ -16,7 +16,7 @@ TreeHandle TreeHandle::clone() const { } /* Hierarchy operations */ -TreeNode * TreeHandle::node() const { assert(m_identifier != TreeNode::NoNodeIdentifier); return TreePool::sharedPool()->node(m_identifier); } +TreeNode * TreeHandle::node() const { assert(hasNode(m_identifier)); return TreePool::sharedPool()->node(m_identifier); } size_t TreeHandle::size() const { return node()->deepSize(node()->numberOfChildren()); } @@ -204,7 +204,7 @@ void TreeHandle::setTo(const TreeHandle & tr) { } void TreeHandle::release(int identifier) { - if (identifier == TreeNode::NoNodeIdentifier) { + if (!hasNode(identifier)) { return; } TreeNode * node = TreePool::sharedPool()->node(identifier); diff --git a/poincare/src/tree_node.cpp b/poincare/src/tree_node.cpp index 1c8df84ee..3036690b6 100644 --- a/poincare/src/tree_node.cpp +++ b/poincare/src/tree_node.cpp @@ -31,7 +31,7 @@ void TreeNode::rename(int identifier, bool unregisterPreviousIdentifier) { // Hierarchy TreeNode * TreeNode::parent() const { - return m_parentIdentifier == NoNodeIdentifier ? nullptr : TreePool::sharedPool()->node(m_parentIdentifier); + return TreeHandle::hasNode(m_parentIdentifier) ? TreePool::sharedPool()->node(m_parentIdentifier) : nullptr; } TreeNode * TreeNode::root() {