From 7d21a4e0fb6352fb73427f8930de131f6afd5551 Mon Sep 17 00:00:00 2001 From: Dr Scott Date: Thu, 26 Jan 2012 00:53:53 +0100 Subject: [PATCH 1/3] fixing some memory problems --- Contractor/EdgeBasedGraphFactory.cpp | 4 ++-- createHierarchy.cpp | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Contractor/EdgeBasedGraphFactory.cpp b/Contractor/EdgeBasedGraphFactory.cpp index 18a7c86e7..d35820dd1 100644 --- a/Contractor/EdgeBasedGraphFactory.cpp +++ b/Contractor/EdgeBasedGraphFactory.cpp @@ -146,7 +146,7 @@ void EdgeBasedGraphFactory::Run() { } } ++secondRestrictionIterator; - } while(u == secondRestrictionIterator->fromNode); + } while(secondRestrictionIterator != inputRestrictions.end() && u == secondRestrictionIterator->fromNode); } if(_nodeBasedGraph->EndEdges(v) == _nodeBasedGraph->BeginEdges(v) + 1 && _nodeBasedGraph->GetEdgeData(e1).type != INT_MAX) { EdgeBasedNode currentNode; @@ -194,7 +194,7 @@ void EdgeBasedGraphFactory::Run() { } } ++secondRestrictionIterator; - } while(u == secondRestrictionIterator->fromNode); + } while(secondRestrictionIterator != inputRestrictions.end() && u == secondRestrictionIterator->fromNode); } if( !isTurnRestricted || (isOnlyAllowed && w == onlyToNode) ) { //only add an edge if turn is not prohibited diff --git a/createHierarchy.cpp b/createHierarchy.cpp index d03cc78e4..b7185f802 100644 --- a/createHierarchy.cpp +++ b/createHierarchy.cpp @@ -155,6 +155,7 @@ int main (int argc, char *argv[]) { std::vector< ContractionCleanup::Edge > contractedEdges; contractor->GetEdges( contractedEdges ); + delete contractor; ContractionCleanup * cleanup = new ContractionCleanup(n, contractedEdges); contractedEdges.clear(); From bef3aad423bf8e8e5df3f5dbb536d2852f5e17b1 Mon Sep 17 00:00:00 2001 From: Dr Scott Date: Thu, 26 Jan 2012 23:03:39 +0100 Subject: [PATCH 2/3] another memory problem --- createHierarchy.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/createHierarchy.cpp b/createHierarchy.cpp index b7185f802..17b6e37ed 100644 --- a/createHierarchy.cpp +++ b/createHierarchy.cpp @@ -184,7 +184,7 @@ int main (int argc, char *argv[]) { numberOfNodes+=1; std::vector< StaticGraph::_StrNode > _nodes; - _nodes.resize( numberOfNodes); + _nodes.resize( numberOfNodes + 1 ); StaticGraph::EdgeIterator edge = 0; StaticGraph::EdgeIterator position = 0; From 571824415c3a9ba6c5e051d80f6061f849ced96a Mon Sep 17 00:00:00 2001 From: Dr Scott Date: Fri, 27 Jan 2012 00:41:31 +0100 Subject: [PATCH 3/3] memory problem (because of n+1 in StaticGraph::EndEdges) --- Util/GraphLoader.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Util/GraphLoader.h b/Util/GraphLoader.h index 75dbfad4b..099d390dd 100644 --- a/Util/GraphLoader.h +++ b/Util/GraphLoader.h @@ -364,7 +364,7 @@ template unsigned readHSGRFromStream(istream &in, vector& nodeList, vector & edgeList) { unsigned numberOfNodes = 0; in.read((char*) & numberOfNodes, sizeof(unsigned)); - nodeList.resize(numberOfNodes); + nodeList.resize(numberOfNodes + 1); NodeT currentNode; for(unsigned nodeCounter = 0; nodeCounter < numberOfNodes; ++nodeCounter ) { in.read((char*) ¤tNode, sizeof(NodeT));