Do not access e->to->prevedge if not defined

In some cases - mostly when e->to == myself the prevedge is set to NULL,
causing invalid memory access. In rare cases this may lead to malformed mst
or segfaults.
This commit is contained in:
thorkill 2015-07-19 18:53:29 +02:00
parent bc747f8146
commit 6dbcd4eb3d

View file

@ -190,7 +190,7 @@ static void sssp_bfs(void) {
if(e->to->status.visited if(e->to->status.visited
&& (!e->to->status.indirect || indirect) && (!e->to->status.indirect || indirect)
&& (e->to->distance != n->distance + 1 || e->weight >= e->to->prevedge->weight)) && (e->to->prevedge && (e->to->distance != n->distance + 1 || e->weight >= e->to->prevedge->weight)))
continue; continue;
// Only update nexthop if it doesn't increase the path length // Only update nexthop if it doesn't increase the path length