Ticket #158 (closed bug report: fixed)
osm2pgrouting segfault if nd node references undefined node
Reported by: | paul | Owned by: | somebody |
---|---|---|---|
Priority: | major | Milestone: | Version 1.1 |
Component: | osm2pgrouting | Version: | trunk |
Keywords: | segfault, node | Cc: |
Description
* When a "nd" xml document node is found the sax parser tries to increase a usage counter within the corresponding Node object. * The Node is only created when a "Node" xml Element is parsed.
These conditions lead to a segfault when a nd reference appears for a Node which either does not exist or is declared after the ND reference (is this allowed ?)
The following svn diff shows the changes needed to avoid segfault
Index: src/OSMDocumentParserCallback.cpp =================================================================== --- src/OSMDocumentParserCallback.cpp (revision 331) +++ src/OSMDocumentParserCallback.cpp (working copy) @@ -46,8 +46,14 @@ if( strcmp(name,"ref")==0 ) { long long nodeRefId = atol( value ); - m_pActWay->AddNodeRef( m_rDocument.FindNode( nodeRefId ) ); - m_rDocument.FindNode( nodeRefId )->numsOfUse+=1; + m_pActWay->AddNodeRef( m_rDocument.FindNode( nodeRefId ) ); + Node * node = m_rDocument.FindNode( nodeRefId ); + if(node != 0 ){ + node->numsOfUse+=1; + }else { + std::cout << "Reference nd=" << nodeRefId << " has no corresponding Node Entry (Maybe Node entry after Reference?)" << std::endl; + } } } }
Change History
Note: See
TracTickets for help on using
tickets.