diff options
| author | Sander Vrijders <sander.vrijders@ugent.be> | 2017-03-24 11:11:47 +0100 | 
|---|---|---|
| committer | Sander Vrijders <sander.vrijders@ugent.be> | 2017-03-24 11:16:11 +0100 | 
| commit | 81a70d5ed630cad01b5a47a56b96c4d7bfe08765 (patch) | |
| tree | 2b136e527a744f5f2a818711728e0ce97fdd6b78 /src/ipcpd | |
| parent | a02044a3b9a44e24699311ed753491ebca472c62 (diff) | |
| download | ouroboros-81a70d5ed630cad01b5a47a56b96c4d7bfe08765.tar.gz ouroboros-81a70d5ed630cad01b5a47a56b96c4d7bfe08765.zip | |
ipcpd: normal: Fix while loop
The next vertex was not taken at the end of the Dijkstra calculation
loop.
Diffstat (limited to 'src/ipcpd')
| -rw-r--r-- | src/ipcpd/normal/graph.c | 7 | 
1 files changed, 7 insertions, 0 deletions
| diff --git a/src/ipcpd/normal/graph.c b/src/ipcpd/normal/graph.c index ed545b8c..ecaff14c 100644 --- a/src/ipcpd/normal/graph.c +++ b/src/ipcpd/normal/graph.c @@ -396,6 +396,7 @@ static struct vertex ** dijkstra(struct graph * graph,          if (prev == NULL)                  return NULL; +        /* Init the data structures */          list_for_each(p, &graph->vertices) {                  v = list_entry(p, struct vertex, next);                  vertices[i] = v; @@ -407,6 +408,7 @@ static struct vertex ** dijkstra(struct graph * graph,                  i++;          } +        /* Perform actual Dijkstra */          i = get_min_vertex(vertices, graph->nr_vertices, dist, &v);          while (v != NULL) {                  list_for_each(p, &v->edges) { @@ -429,6 +431,7 @@ static struct vertex ** dijkstra(struct graph * graph,                                  prev[j] = v;                          }                  } +                i = get_min_vertex(vertices, graph->nr_vertices, dist, &v);          }          return prev; @@ -463,6 +466,10 @@ ssize_t graph_routing_table(struct graph *           graph,                  return -1;          } +        /* +         * Now loop through the list of predecessors +         * to construct the routing table +         */          list_for_each(p, &graph->vertices) {                  v = list_entry(p, struct vertex, next);                  prev = prevs[i]; | 
