diff --git a/include/behaviortree_cpp/xml_parsing.h b/include/behaviortree_cpp/xml_parsing.h index c540c47ef..41647bd50 100644 --- a/include/behaviortree_cpp/xml_parsing.h +++ b/include/behaviortree_cpp/xml_parsing.h @@ -37,9 +37,23 @@ struct Tree { TreeNode* root_node; std::vector nodes; + + Tree() : root_node(nullptr) + { + + } + + Tree(TreeNode* root_node, std::vector nodes) + : root_node(root_node), nodes(nodes) + { + + } + ~Tree() { - haltAllActions(root_node); + if (root_node) { + haltAllActions(root_node); + } } }; diff --git a/src/xml_parsing.cpp b/src/xml_parsing.cpp index 25723425b..6e649c121 100644 --- a/src/xml_parsing.cpp +++ b/src/xml_parsing.cpp @@ -543,7 +543,7 @@ Tree buildTreeFromText(const BehaviorTreeFactory& factory, const std::string& te std::vector nodes; auto root = parser.instantiateTree(nodes); assignBlackboardToEntireTree(root.get(), blackboard); - return {root.get(), nodes}; + return Tree(root.get(), nodes); } Tree buildTreeFromFile(const BehaviorTreeFactory& factory, const std::string& filename, @@ -555,6 +555,6 @@ Tree buildTreeFromFile(const BehaviorTreeFactory& factory, const std::string& fi std::vector nodes; auto root = parser.instantiateTree(nodes); assignBlackboardToEntireTree(root.get(), blackboard); - return {root.get(), nodes}; + return Tree(root.get(), nodes); } }