From: Jiri Vlasak Date: Wed, 29 Jan 2020 11:01:00 +0000 (+0100) Subject: Use delete kd tree in deinit X-Git-Tag: v0.4.0~16^2~2 X-Git-Url: https://rtime.felk.cvut.cz/gitweb/hubacji1/rrts.git/commitdiff_plain/a9335993d794d9b237a2af7642d0a1315a8de558 Use delete kd tree in deinit --- diff --git a/api/rrtext.h b/api/rrtext.h index 6c3a30d..2081c56 100644 --- a/api/rrtext.h +++ b/api/rrtext.h @@ -38,6 +38,7 @@ class RRTExt7 : public virtual RRTS { KdNode(RRTNode *n); }; KdNode *kdroot_ = nullptr; + void delete_kd_nodes(KdNode *n); void store_node(RRTNode *n, KdNode *&r, int l); void nn(RRTNode *&n, RRTNode &t, KdNode *r, int l, double &d); public: diff --git a/src/rrtext7.cc b/src/rrtext7.cc index 07f7c6c..ab52db7 100644 --- a/src/rrtext7.cc +++ b/src/rrtext7.cc @@ -7,6 +7,17 @@ RRTExt7::KdNode::KdNode(RRTNode *n) { } +void RRTExt7::delete_kd_nodes(KdNode *n) +{ + if (!n) + return; + if (n->left() != nullptr) + delete_kd_nodes(n->left()); + if (n->right() != nullptr) + delete_kd_nodes(n->right()); + delete n; +} + void RRTExt7::store_node(RRTNode *n, KdNode *&r, int l) { if (r == nullptr) @@ -55,6 +66,7 @@ void RRTExt7::init() void RRTExt7::deinit() { + this->delete_kd_nodes(this->kdroot_); } void RRTExt7::store_node(RRTNode n)