]> granicus.if.org Git - graphviz/commitdiff
Fixes for bug 1816
authorerg <devnull@localhost>
Mon, 16 Nov 2009 20:29:02 +0000 (20:29 +0000)
committererg <devnull@localhost>
Mon, 16 Nov 2009 20:29:02 +0000 (20:29 +0000)
cmd/smyrna/gui/frmobjectui.c
cmd/smyrna/gui/gui.c
cmd/smyrna/hotkeymap.c
cmd/smyrna/main.c
cmd/smyrna/topview.c
cmd/smyrna/tvnodes.c
cmd/smyrna/viewport.c

index b061ecef00acf9b2713d5789015c2ece5158b8d7..1ae22e7d0a8630440cee7dde239e64632d357d9b 100644 (file)
@@ -647,16 +647,15 @@ attr_list* load_attr_list(Agraph_t* g)
        FILE *file;
        Agsym_t* sym;   /*cgraph atttribute*/
     char line[BUFSIZ];
-       char* smyrna_attrs = smyrnaPath ("attrs.txt");
+    static char* smyrna_attrs;
        char* a;
        
-       g=view->g[view->activeGraph];
-       file = fopen(smyrna_attrs, "r");
-
-       l=attr_list_new(NULL,1);
-
-    if (file != NULL) 
-       {
+    if (!smyrna_attrs)
+       smyrna_attrs = smyrnaPath ("attrs.txt");
+    g=view->g[view->activeGraph];
+    l=attr_list_new(NULL,1);
+    file = fopen(smyrna_attrs, "r");
+    if (file != NULL) {
                int i=0;
                while (fgets(line, BUFSIZ, file) != NULL) 
                {
@@ -689,10 +688,10 @@ attr_list* load_attr_list(Agraph_t* g)
                        attr_list_add(l,attr);
 
                }
-       }
-       sym=NULL;
-    while ((sym = agnxtattr(g,AGRAPH, sym)))
-       {
+       fclose (file);
+    }
+    sym=NULL;
+    while ((sym = agnxtattr(g,AGRAPH, sym))) {
                attr=binarySearch(l, sym->name);
                if (attr)
                    attr->objType[0]=1;
@@ -701,7 +700,7 @@ attr_list* load_attr_list(Agraph_t* g)
                    attr=new_attr_with_ref(sym);
                    attr_list_add(l,attr);
                }
-       }
+    }
        sym=NULL;
        while ((sym = agnxtattr(g,AGNODE, sym)))
        {
@@ -1394,10 +1393,6 @@ void change_selected_edge_attributes(Agraph_t * g, char *attrname,
     }
 }
 
-
-
-
-
 void load_attributes()
 {
     FILE *file;
@@ -1488,6 +1483,7 @@ void load_attributes()
            }
            attrcount++;
        }
+       fclose (file);
     }
 }
 
index e31c31cf2abf2c6ded0b1708717ff56c5c504f7e..27d1ca18a1cab1cca157326402417cfacad07dcd 100755 (executable)
@@ -400,6 +400,7 @@ void load_attributes(void)
            }
            attrcount++;
        }
+       fclose (file);
     }
 }
 void show_gui_warning(char *str)
index 3beff00039a2430aa7a86f5ea4bb2337ed87dc1e..61e56d4b1de0d32e29c3f1846a2850c3c52a135f 100644 (file)
@@ -100,8 +100,7 @@ void load_mouse_actions (char* modefile,ViewInfo* v)
     char* a;
     char* action_file = smyrnaPath ("mouse_actions.txt");
     file = fopen(action_file, "r");
-    if (file != NULL) 
-       {
+    if (file != NULL) {
                int ind=0;
                while (fgets(line, BUFSIZ, file) != NULL) 
                {
@@ -139,20 +138,9 @@ void load_mouse_actions (char* modefile,ViewInfo* v)
                        }
                        ind++;
                }
+               fclose (file);
        }
-
-
-
-
-
-
-
-
-
-
-
-
-
+    free (action_file);
 
 
 /*
@@ -222,10 +210,6 @@ void load_mouse_actions (char* modefile,ViewInfo* v)
 }
 
 
-
-
-
-
 int get_mode(ViewInfo* v)
 {
 
index aba12b2540785e932d5bd70cc09db398bd6e3afd..9b0d949bea1eb67d60d89b5d27200840452c9891 100755 (executable)
@@ -67,8 +67,7 @@ unsigned char SmyrnaVerbose;
  */
 char *smyrnaPath(char *suffix)
 {
-    static int buflen;
-    static char *buf;
+    char *buf;
     static int baselen;
     int slen;
 #ifdef WIN32
@@ -78,16 +77,11 @@ char *smyrnaPath(char *suffix)
 #endif
     assert(smyrnaDir);
 
-    if (!buf) {
+    if (baselen == 0) {
        baselen = (int)strlen(smyrnaDir) + 2;
-       buflen = baselen + 100;
-       buf = N_NEW(buflen, char);
     }
     slen = (int)strlen(suffix);
-    if (baselen + slen > buflen) {
-       buflen = baselen + slen;
-       buf = realloc(buf, buflen);
-    }
+    buf = N_NEW(baselen+slen, char);
     sprintf(buf, "%s%s%s", smyrnaDir, pathSep, suffix);
     return buf;
 }
index f3d5d9f832956de82cb57f0bd8f10b6fb6f09df9..7addf8cfed7aa0f0bb488e406c11077fb188dca4 100755 (executable)
@@ -327,7 +327,6 @@ void init_node_size(Agraph_t * g, topview * t)
 
 void update_topview(Agraph_t * g, topview * t, int init)
 {
-
     char *info_file;
     char *str;
     char buf[512];
@@ -343,6 +342,7 @@ void update_topview(Agraph_t * g, topview * t, int init)
     settvxdot(view->g[view->activeGraph], view->Topview);
     init_node_size(g, t);
     /*This is a temp code , need to be removed after Xue's demo */
+#if UNUSED
     info_file = agget(g, "demo_file");
     if ((info_file != NULL) && (strlen(info_file) != 0)) {
        agxbuf xbuf;
@@ -362,6 +362,7 @@ void update_topview(Agraph_t * g, topview * t, int init)
 
 
     /*end of temp code */
+#endif
 
     if (view->SignalBlock)
        btnToolZoomFit_clicked(NULL, NULL);
index 82694e2006f5f0f0d6559229824ef164e09d8723..83df3f058b25b278413a8eaf42462124e3e1a452 100755 (executable)
@@ -538,7 +538,9 @@ int create_save_subgraph_from_filter(char *filename)
     }
 
     if ((outputfile = fopen(filename, "w"))) {
-       if (agwrite(subg, outputfile)) {
+       int ret = agwrite(subg, outputfile);
+       fclose (outputfile);
+       if (ret) {
            agdelsubg(view->g[view->activeGraph], subg);
            return 1;
        } else {
index 4711d03a7882b62c94c04feac58e606fa55bc376..09e7d7334f4876503a5d14fd3434914b7f974d18 100755 (executable)
@@ -350,6 +350,7 @@ void init_viewport(ViewInfo * view)
     FILE *input_file = NULL;
     FILE *input_file2 = NULL;
     get_data_dir();
+    static char* path;
 
     input_file = fopen(view->template_file, "rb");
     if (!input_file) {
@@ -357,22 +358,28 @@ void init_viewport(ViewInfo * view)
                "default attributes template graph file \"%s\" not found\n",
                view->template_file);
        exit(-1);
-    } else if (!(view->systemGraphs.def_attrs = agread(input_file, 0))) {
+    } 
+    view->systemGraphs.def_attrs = agread(input_file, 0);
+    fclose (input_file);
+
+    if (!view->systemGraphs.def_attrs) {
        fprintf(stderr,
                "could not load default attributes template graph file \"%s\"\n",
                view->template_file);
        exit(-1);
     }
-    printf ("%s\n",smyrnaPath("attr_widgets.dot"));
-    input_file2 = fopen(smyrnaPath("attr_widgets.dot"), "rb");
-    if (!input_file2) 
-    {
+    if (!path)
+       path = smyrnaPath("attr_widgets.dot");
+    printf ("%s\n", path);
+    input_file2 = fopen(path, "rb");
+    if (!input_file2) {
        fprintf(stderr, "default attributes template graph file \"%s\" not found\n",smyrnaPath("attr_widgets.dot"));
        exit(-1);
 
     }
-    else if (!(view->systemGraphs.attrs_widgets = agread(input_file2, 0))) 
-    {
+    view->systemGraphs.attrs_widgets = agread(input_file2, 0);
+    fclose (input_file2);
+    if (!(view->systemGraphs.attrs_widgets )) {
        fprintf(stderr,"could not load default attribute widgets graph file \"%s\"\n",smyrnaPath("attr_widgets.dot"));
        exit(-1);
     }
@@ -582,9 +589,10 @@ static Agraph_t *loadGraph(char *filename)
        g_print("Cannot open %s\n", filename);
        return 0;
     }
-    if (!(g = agread(input_file, NIL(Agdisc_t *)))) {
+    g = agread(input_file, NIL(Agdisc_t *));
+    fclose (input_file);
+    if (!g) {
        g_print("Cannot read graph in  %s\n", filename);
-       fclose(input_file);
        return 0;
     }
 
@@ -592,7 +600,6 @@ static Agraph_t *loadGraph(char *filename)
      */
     if (!agattr(g, AGNODE, "pos", NULL)) {
        g_print("There is no position info in %s\n", filename);
-       fclose(input_file);
        return 0;
     }
     free(view->Topview->Graphdata.GraphFileName);
@@ -720,7 +727,7 @@ md5_byte_t *get_md5_key(Agraph_t * graph)
  */
 int save_graph_with_file_name(Agraph_t * graph, char *fileName)
 {
-
+    int ret;
     FILE *output_file;
     update_graph_params(graph);
     if (fileName)
@@ -736,7 +743,9 @@ int save_graph_with_file_name(Agraph_t * graph, char *fileName)
        return 0;
     }
 
-    if (agwrite(graph, (void *) output_file)) {
+    ret = agwrite(graph, (void *) output_file);
+    fclose (output_file);
+    if (ret) {
        g_print("%s successfully saved \n", fileName);
        return 1;
     }