Routing outside coverage area crashes the Router

This commit is contained in:
Dennis Luxen 2011-07-22 16:05:40 +00:00
parent 53e9d70d3d
commit 61bc95dc9a
2 changed files with 11 additions and 8 deletions

View File

@ -288,7 +288,6 @@ private:
#ifndef NDEBUG #ifndef NDEBUG
for ( Key i = 2; i < (Key) heap.size(); ++i ) { for ( Key i = 2; i < (Key) heap.size(); ++i ) {
assert( heap[i].weight >= heap[i >> 1].weight ); assert( heap[i].weight >= heap[i >> 1].weight );
std::cout << "checked" << std::endl;
} }
#endif #endif
} }

View File

@ -142,15 +142,19 @@ public:
} }
rawRoute.rawViaNodeCoordinates.push_back(targetCoord); rawRoute.rawViaNodeCoordinates.push_back(targetCoord);
vector<PhantomNode> phantomNodeVector(rawRoute.rawViaNodeCoordinates.size()); vector<PhantomNode> phantomNodeVector(rawRoute.rawViaNodeCoordinates.size());
bool errorOccurredFlag = false;
#pragma omp parallel for #pragma omp parallel for
for(unsigned i = 0; i < rawRoute.rawViaNodeCoordinates.size(); i++) { for(unsigned i = 0; i < rawRoute.rawViaNodeCoordinates.size(); i++) {
threadData[omp_get_thread_num()]->sEngine->FindPhantomNodeForCoordinate( rawRoute.rawViaNodeCoordinates[i], phantomNodeVector[i]); threadData[omp_get_thread_num()]->sEngine->FindPhantomNodeForCoordinate( rawRoute.rawViaNodeCoordinates[i], phantomNodeVector[i]);
if(!rawRoute.rawViaNodeCoordinates[i].isSet()) {
errorOccurredFlag = true;
}
} }
rawRoute.Resize(); rawRoute.Resize();
unsigned distance = 0; unsigned distance = 0;
bool errorOccurredFlag = false;
//#pragma omp parallel for reduction(+:distance) //#pragma omp parallel for reduction(+:distance)
for(unsigned i = 0; i < phantomNodeVector.size()-1 && !errorOccurredFlag; i++) { for(unsigned i = 0; i < phantomNodeVector.size()-1 && !errorOccurredFlag; i++) {
@ -158,11 +162,11 @@ public:
segmentPhantomNodes.startPhantom = phantomNodeVector[i]; segmentPhantomNodes.startPhantom = phantomNodeVector[i];
segmentPhantomNodes.targetPhantom = phantomNodeVector[i+1]; segmentPhantomNodes.targetPhantom = phantomNodeVector[i+1];
std::vector< _PathData > path; std::vector< _PathData > path;
int distanceOfSegment = threadData[omp_get_thread_num()]->sEngine->ComputeRoute(segmentPhantomNodes, path); unsigned distanceOfSegment = threadData[omp_get_thread_num()]->sEngine->ComputeRoute(segmentPhantomNodes, path);
if(UINT_MAX == threadData[omp_get_thread_num()]->distanceOfSegment ) { if(UINT_MAX == distanceOfSegment ) {
errorOccurredFlag = true; errorOccurredFlag = true;
cout << "Error occurred, path not found" << endl; // cout << "Error occurred, path not found" << endl;
distance = UINT_MAX; distance = UINT_MAX;
break; break;
} else { } else {