From c36fc9e49fef195600081572b5e5759db4ebc507 Mon Sep 17 00:00:00 2001 From: Dennis Luxen Date: Tue, 21 Sep 2010 16:23:50 +0000 Subject: [PATCH] Forgot to guard against bad data from NNGrid --- Contractor/SearchEngine.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Contractor/SearchEngine.h b/Contractor/SearchEngine.h index 6010063d0..4754fbb8b 100644 --- a/Contractor/SearchEngine.h +++ b/Contractor/SearchEngine.h @@ -73,6 +73,12 @@ public: { bool reverse = false; EdgeID currentEdge = _graph->FindEdge( phantomNodes->startNode1, phantomNodes->startNode2 ); + if(currentEdge == UINT_MAX){ + delete _forwardHeap; + delete _backwardHeap; + return _upperbound; + } + if(currentEdge == UINT_MAX){ currentEdge = _graph->FindEdge( phantomNodes->startNode2, phantomNodes->startNode1 ); reverse = true; @@ -108,6 +114,12 @@ public: edge = _graph->FindEdge( phantomNodes->startNode2, phantomNodes->startNode1 ); reverse = true; } + if(edge == UINT_MAX){ + delete _forwardHeap; + delete _backwardHeap; + return _upperbound; + } + EdgeWeight w = _graph->GetEdgeData( edge ).distance; if( (_graph->GetEdgeData( edge ).backward && !reverse) || (_graph->GetEdgeData( edge ).forward && reverse) ) _forwardHeap->Insert(phantomNodes->startNode1, absDouble( w*phantomNodes->startRatio), phantomNodes->startNode1); @@ -122,6 +134,12 @@ public: edge = _graph->FindEdge( phantomNodes->targetNode2, phantomNodes->targetNode1 ); reverse = true; } + if(edge == UINT_MAX){ + delete _forwardHeap; + delete _backwardHeap; + return _upperbound; + } + EdgeWeight w = _graph->GetEdgeData( edge ).distance; if( (_graph->GetEdgeData( edge ).backward && !reverse) || (_graph->GetEdgeData( edge ).forward && reverse) ) _backwardHeap->Insert(phantomNodes->targetNode2, absDouble( w*phantomNodes->targetRatio), phantomNodes->targetNode2);