]> granicus.if.org Git - graphviz/commitdiff
The fix for bug 2471 wasn't complete, as dot can pass a virtual edge into
authorEmden R. Gansner <erg@gentoo.local>
Sun, 17 May 2015 19:47:41 +0000 (15:47 -0400)
committerEmden R. Gansner <erg@gentoo.local>
Sun, 17 May 2015 19:47:41 +0000 (15:47 -0400)
makeStraightEdges, which assumes that the first edge is real so it can find
the actual head node.

lib/dotgen/dotsplines.c

index 110bce38dbec6b803874a45be294cd3358ba4047..1999df59dfea23a59c77dbcc86e3b6dd6c954271 100644 (file)
@@ -413,7 +413,19 @@ static void _dot_splines(graph_t * g, int normalize)
        }
 
        if (et == ET_CURVED) {
-           makeStraightEdges (g, edges+ind, cnt, et, &sinfo);
+           int ii;
+           edge_t* e0;
+           edge_t** edgelist;
+           if (cnt == 1)
+               edgelist = &e0;
+           else
+               edgelist = N_NEW(cnt, edge_t*);
+           edgelist[0] = getmainedge((edges+ind)[0]);
+           for (ii = 1; ii < cnt; ii++)
+               edgelist[ii] = (edges+ind)[ii];
+           makeStraightEdges (g, edgelist, cnt, et, &sinfo);
+           if (cnt > 1)
+               free (edgelist);
        }
        else if (agtail(e0) == aghead(e0)) {
            int b, sizey, r;