]> granicus.if.org Git - graphviz/commitdiff
suppress any attempt to create protonode
authorellson <devnull@localhost>
Sat, 7 Jan 2006 18:13:52 +0000 (18:13 +0000)
committerellson <devnull@localhost>
Sat, 7 Jan 2006 18:13:52 +0000 (18:13 +0000)
tclpkg/gv/gv.cpp

index bd28c764a41be1783976e80f7c2f04f5ccd82c09..2c329773d9d4bd1b185e2f30bae7ba3c9ccaf923 100644 (file)
@@ -85,7 +85,8 @@ Agraph_t *graph(Agraph_t *g, char *name)
 
 Agnode_t *node(Agraph_t *g, char *name)
 {
-    if (!gvc)
+    // creating a protonode is not permitted
+    if (!gvc || (name[0] == '\001' && strcmp (name, "\001proto") == 0))
        return NULL;
     return agnode(g, name);
 }
@@ -93,25 +94,29 @@ Agnode_t *node(Agraph_t *g, char *name)
 Agedge_t *edge(Agnode_t *t, Agnode_t *h)
 {
     // edges from/to the protonode are not permitted
-    if ((t->name[0] == '\001' && strcmp (t->name, "\001proto") == 0)
-     || (h->name[0] == '\001' && strcmp (h->name, "\001proto") == 0))
+    if (!gvc || !t || !h
+      || (t->name[0] == '\001' && strcmp (t->name, "\001proto") == 0)
+      || (h->name[0] == '\001' && strcmp (h->name, "\001proto") == 0))
        return NULL;
     return agedge(t->graph, t, h);
 }
 
+// induce tail if necessary
 Agedge_t *edge(char *tname, Agnode_t *h)
 {
-    return edge(agnode(h->graph, tname), h);
+    return edge(node(h->graph, tname), h);
 }
 
+// induce head if necessary
 Agedge_t *edge(Agnode_t *t, char *hname)
 {
-    return edge(t, agnode(t->graph, hname));
+    return edge(t, node(t->graph, hname));
 }
 
+// induce tail/head if necessary
 Agedge_t *edge(Agraph_t *g, char *tname, char *hname)
 {
-    return edge(agnode(g, tname), agnode(g, hname));
+    return edge(node(g, tname), node(g, hname));
 }
 
 //-------------------------------------------------