From c496781bf6dda3484b470d1e6d855bd095e71e28 Mon Sep 17 00:00:00 2001 From: hedin Date: Mon, 18 Feb 2019 15:25:37 +0200 Subject: [PATCH] fixed AStar improper point deletion (leads to crash) --- core/math/a_star.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/core/math/a_star.cpp b/core/math/a_star.cpp index b885a06834c..21ec5218b75 100644 --- a/core/math/a_star.cpp +++ b/core/math/a_star.cpp @@ -97,11 +97,14 @@ void AStar::remove_point(int p_id) { Point *p = points[p_id]; - for (Set::Element *E = p->neighbours.front(); E; E = E->next()) { - - Segment s(p_id, E->get()->id); - segments.erase(s); - E->get()->neighbours.erase(p); + Map::Element *PE = points.front(); + while (PE) { + for (Set::Element *E = PE->get()->neighbours.front(); E; E = E->next()) { + Segment s(p_id, E->get()->id); + segments.erase(s); + E->get()->neighbours.erase(p); + } + PE = PE->next(); } memdelete(p);