Fix off-by-one in avoid search

This commit is contained in:
Patrick Niklaus
2017-08-16 19:09:51 +00:00
committed by Patrick Niklaus
parent c6be2e768a
commit 45140ca9f7
2 changed files with 5 additions and 15 deletions
@@ -184,11 +184,6 @@ void routingStep(const DataFacade<Algorithm> &facade,
BOOST_ASSERT(destination != cell.GetDestinationNodes().end());
const NodeID to = *destination;
if (facade.AvoidNode(to))
{
continue;
}
if (shortcut_weight != INVALID_EDGE_WEIGHT && node != to)
{
const EdgeWeight to_weight = weight + shortcut_weight;
@@ -216,11 +211,6 @@ void routingStep(const DataFacade<Algorithm> &facade,
BOOST_ASSERT(source != cell.GetSourceNodes().end());
const NodeID to = *source;
if (facade.AvoidNode(to))
{
continue;
}
if (shortcut_weight != INVALID_EDGE_WEIGHT && node != to)
{
const EdgeWeight to_weight = weight + shortcut_weight;
@@ -247,12 +237,9 @@ void routingStep(const DataFacade<Algorithm> &facade,
if (DIRECTION == FORWARD_DIRECTION ? edge_data.forward : edge_data.backward)
{
const NodeID to = facade.GetTarget(edge);
if (facade.AvoidNode(to))
{
continue;
}
if (checkParentCellRestriction(partition.GetCell(level + 1, to), args...))
if (!facade.AvoidNode(to) &&
checkParentCellRestriction(partition.GetCell(level + 1, to), args...))
{
BOOST_ASSERT_MSG(edge_data.weight > 0, "edge_weight invalid");
const EdgeWeight to_weight = weight + edge_data.weight;