]> granicus.if.org Git - graphviz/commitdiff
deal with failures to read graph
authorellson <devnull@localhost>
Fri, 5 May 2006 15:24:33 +0000 (15:24 +0000)
committerellson <devnull@localhost>
Fri, 5 May 2006 15:24:33 +0000 (15:24 +0000)
lib/gvc/gvevent.c

index b6597897f3a41b254b15b235e98749e4b40c7881..cb07fe8bb4a7b9b89c5ccb194ac80315fb3ffe2f 100644 (file)
@@ -537,29 +537,33 @@ static void gvevent_read (GVJ_t * job, char *filename, char *layout)
 {
     FILE *f;
     GVC_t *gvc;
+    Agraph_t *g = NULL;
     gvlayout_engine_t *gvle;
 
     gvc = job->gvc;
-    if (gvc->g) {
-       gvle = gvc->layout.engine;
-       if (gvle && gvle->cleanup)
-           gvle->cleanup(gvc->g);
-       graph_cleanup(gvc->g);
-       agclose(gvc->g);
-    }
     if (!filename) {
-       gvc->g = agopen("G", AGDIGRAPH);
+       g = agopen("G", AGDIGRAPH);
        job->output_filename = "new.dot";
     }
     else {
        f = fopen(filename, "r");
        if (!f)
-               return;   /* FIXME - need some error handling */
-       gvc->g = agread(f);
+          return;   /* FIXME - need some error handling */
+       g = agread(f);
        fclose(f);
     }
-    GD_gvc(gvc->g) = gvc;
-    gvLayout(gvc, gvc->g, layout);
+    if (!g)
+       return;   /* FIXME - need some error handling */
+    if (gvc->g) {
+       gvle = gvc->layout.engine;
+       if (gvle && gvle->cleanup)
+           gvle->cleanup(gvc->g);
+       graph_cleanup(gvc->g);
+       agclose(gvc->g);
+    }
+    gvc->g = g;
+    GD_gvc(g) = gvc;
+    gvLayout(gvc, g, layout);
     job->selected_obj = NULL;
     job->current_obj = NULL;
     job->needs_refresh = 1;