From 13264ba21d8ea065b462699ee65e7f1355cc68c9 Mon Sep 17 00:00:00 2001 From: Robert Haschke Date: Fri, 20 Oct 2023 06:55:38 +0200 Subject: [PATCH] Fix leaking of failures into enumerated solutions --- core/src/container.cpp | 3 ++- core/test/test_serial.cpp | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/container.cpp b/core/src/container.cpp index 10d28105..4203f3e2 100644 --- a/core/src/container.cpp +++ b/core/src/container.cpp @@ -487,7 +487,8 @@ struct SolutionCollector solutions.emplace_back(std::make_pair(trace, prio)); } else { for (SolutionBase* successor : next) { - assert(!successor->isFailure()); // We shouldn't have invalid solutions + if (successor->isFailure()) + continue; // skip failures trace.push_back(successor); traverse(*successor, prio + InterfaceState::Priority(1, successor->cost())); trace.pop_back(); diff --git a/core/test/test_serial.cpp b/core/test/test_serial.cpp index 406b6663..9d81cf3c 100644 --- a/core/test/test_serial.cpp +++ b/core/test/test_serial.cpp @@ -72,7 +72,6 @@ TEST_F(ConnectConnect, FailSucc) { // https://github.com/ros-planning/moveit_task_constructor/issues/485#issuecomment-1760606116 // TODO: Solutions are enumerated multiple times -// TODO: invalid solutions leak into enumeration TEST_F(ConnectConnect, UniqueEnumeration) { add(t, new GeneratorMockup({ 1.0, 2.0, 3.0 })); auto con1 = add(t, new ConnectMockup());