fixing last leg of output path

This commit is contained in:
Dennis Luxen 2010-09-17 08:46:43 +00:00
parent 9c13a8a6dd
commit be836dc950

View File

@ -139,7 +139,11 @@ public:
} }
if ( _upperbound == std::numeric_limits< unsigned int >::max() || onSameEdge ) if ( _upperbound == std::numeric_limits< unsigned int >::max() || onSameEdge )
{
delete _forwardHeap;
delete _backwardHeap;
return _upperbound; return _upperbound;
}
NodeID pathNode = middle; NodeID pathNode = middle;
deque< NodeID > packedPath; deque< NodeID > packedPath;
@ -152,16 +156,19 @@ public:
packedPath.push_back( middle ); packedPath.push_back( middle );
pathNode = middle; pathNode = middle;
do { while ( pathNode != phantomNodes->targetNode2 && pathNode != phantomNodes->targetNode1 ){
pathNode = _backwardHeap->GetData( pathNode ).parent; pathNode = _backwardHeap->GetData( pathNode ).parent;
packedPath.push_back( pathNode ); packedPath.push_back( pathNode );
} while ( pathNode != phantomNodes->targetNode2 && pathNode != phantomNodes->targetNode1 ) ; }
// push start node explicitely // push start node explicitely
path->push_back(packedPath[0]); path->push_back(packedPath[0]);
for(deque<NodeID>::size_type i = 0; i < packedPath.size()-1; i++) if(packedPath[0] != packedPath[1])
{ {
_UnpackEdge(packedPath[i], packedPath[i+1], path); for(deque<NodeID>::size_type i = 0; i < packedPath.size()-1; i++)
{
_UnpackEdge(packedPath[i], packedPath[i+1], path);
}
} }
packedPath.clear(); packedPath.clear();