]> granicus.if.org Git - graphviz/commitdiff
Add function to release memory allocated by gvRenderData; this avoids
authorEmden R. Gansner <erg@research.att.com>
Thu, 6 Jun 2013 17:53:49 +0000 (13:53 -0400)
committerEmden R. Gansner <erg@research.att.com>
Thu, 6 Jun 2013 17:53:49 +0000 (13:53 -0400)
potential conflicts with run-time functions.
Also, ifdef'ed out two assignments in gvFreeLayout that are meaningless
using cgraph, as the GD_drawing(g) is already gone.

lib/gvc.def
lib/gvc/gvc.c
lib/gvc/gvc.h
lib/gvc/gvlayout.c

index d8161cf0b043a0c858e62e80be2b290f395916a5..2efcf8de804394c75986487458cd14e3fc6324dc 100644 (file)
@@ -147,6 +147,7 @@ gvputc
 gvputs    
 gvRender    
 gvRenderData    
+gvFreeRenderData    
 gvRenderFilename    
 gvRenderJobs    
 gvToggle    
index 672cb4d1d188566f1ff470775e171af259a28ebe..b362b07fc899ccf4d27c3a095763594f4e071933 100644 (file)
@@ -252,6 +252,14 @@ int gvRenderData(GVC_t *gvc, graph_t *g, const char *format, char **result, unsi
     return rc;
 }
 
+/* gvFreeRenderData:
+ * Utility routine to free memory allocated in gvRenderData, as the application code may use
+ * a different runtime library.
+ */
+void gvFreeRenderData (char* data)
+{
+    free (data);
+}
 
 void gvAddLibrary(GVC_t *gvc, gvplugin_library_t *lib)
 {
index 06b60011cb575eb059d6f21b2ac2109e2704d3d3..a60366b2c42b6575107242b02348d4184de25901 100644 (file)
@@ -78,6 +78,9 @@ extern int gvRenderContext(GVC_t *gvc, graph_t *g, const char *format, void *con
 /* Render layout in a specified format to a malloc'ed string */
 extern int gvRenderData(GVC_t *gvc, graph_t *g, const char *format, char **result, unsigned int *length);
 
+/* Free memory allocated and pointed to by *result in gvRenderData */
+extern void gvFreeRenderData (char* data);
+
 /* Render layout according to -T and -o options found by gvParseArgs */
 extern int gvRenderJobs(GVC_t *gvc, graph_t *g);
 
index 71a4365de740989a08316a93635af2badd9c0bca..70d71a2ce7f4ba279bf001e398d6bcd8174db20e 100644 (file)
@@ -119,8 +119,10 @@ int gvFreeLayout(GVC_t * gvc, Agraph_t * g)
     
     if (GD_drawing(g)) {
        graph_cleanup(g);
+#ifndef WITH_CGRAPH
        GD_drawing(g) = NULL;
        GD_drawing(g->root) = NULL;
+#endif
     }
     return 0;
 }