]> granicus.if.org Git - graphviz/commitdiff
Work around issue 1671: avoid creating a virtual edge loop.
authorMathis Beer <Mathis.Beer@funkwerk-itk.com>
Thu, 12 Mar 2020 10:20:59 +0000 (11:20 +0100)
committerMathis Beer <Mathis.Beer@funkwerk-itk.com>
Thu, 12 Mar 2020 10:20:59 +0000 (11:20 +0100)
Not an actual solution!
The code removed from flat_rev is already done in merge_oneway.

lib/dotgen/fastgr.c
lib/dotgen/mincross.c

index 03d0396b19401ec5e4bc3889ec106c059fff3d48..ecfc201f03227d5eab06d14c39199435e6b4f7d8 100644 (file)
@@ -338,7 +338,7 @@ basic_merge(edge_t * e, edge_t * rep)
 void 
 merge_oneway(edge_t * e, edge_t * rep)
 {
-    if (rep == ED_to_virt(e)) {
+    if (rep == ED_to_virt(e) || e == ED_to_virt(rep)) {
        agerr(AGWARN, "merge_oneway glitch\n");
        return;
     }
index d156166838c6971c1da67c5d791653ae62e8c1a3..c7c498541b2b27745da8d831315cfca06752c79f 100644 (file)
@@ -1213,8 +1213,6 @@ void flat_rev(Agraph_t * g, Agedge_t * e)
                break;
     if (rev) {
        merge_oneway(e, rev);
-       if (ED_to_virt(e) == 0)
-           ED_to_virt(e) = rev;
        if ((ED_edge_type(rev) == FLATORDER)
            && (ED_to_orig(rev) == 0))
            ED_to_orig(rev) = e;