From f702ca398df7732044151e995c382373cc35ac12da1d1c1fdc049a7d240ff891 Mon Sep 17 00:00:00 2001 From: ADAM David Alan Martin Date: Sun, 20 Apr 2025 01:42:39 -0400 Subject: [PATCH] Doctree owns its root node correctly now. --- src/doctree.hh | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/doctree.hh b/src/doctree.hh index bf31d10..d463255 100644 --- a/src/doctree.hh +++ b/src/doctree.hh @@ -45,19 +45,16 @@ class DoctreeNode { class Doctree { private: DoctreeNode *topNode; - DoctreeNode *rootNode; + std::unique_ptr< DoctreeNode > rootNode= std::make_unique< DoctreeNode >(); int num; public: Doctree () { - rootNode = new DoctreeNode; - topNode = rootNode; + topNode = rootNode.get(); num = 0; }; - ~Doctree () { - delete rootNode; - }; + ~Doctree ()= default; DoctreeNode *push () { DoctreeNode *dn = new DoctreeNode (); @@ -70,19 +67,19 @@ class Doctree { }; void pop () { - assert (topNode != rootNode); // never pop the root node + assert (topNode != rootNode.get()); // never pop the root node topNode = topNode->parent; }; inline DoctreeNode *top () { - if (topNode != rootNode) + if (topNode != rootNode.get()) return topNode; else return NULL; }; inline DoctreeNode *parent (const DoctreeNode *node) { - if (node->parent != rootNode) + if (node->parent != rootNode.get()) return node->parent; else return NULL;