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 )
{
delete _forwardHeap;
delete _backwardHeap;
return _upperbound;
}
NodeID pathNode = middle;
deque< NodeID > packedPath;
@ -152,16 +156,19 @@ public:
packedPath.push_back( middle );
pathNode = middle;
do {
while ( pathNode != phantomNodes->targetNode2 && pathNode != phantomNodes->targetNode1 ){
pathNode = _backwardHeap->GetData( pathNode ).parent;
packedPath.push_back( pathNode );
} while ( pathNode != phantomNodes->targetNode2 && pathNode != phantomNodes->targetNode1 ) ;
}
// push start node explicitely
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();