]> granicus.if.org Git - graphviz/commitdiff
Free installed plugins in gvFreeContext
authorEmden R. Gansner <erg@emdenrg.net>
Sat, 13 Feb 2016 20:02:39 +0000 (15:02 -0500)
committerEmden R. Gansner <erg@emdenrg.net>
Sat, 13 Feb 2016 20:02:39 +0000 (15:02 -0500)
ChangeLog
lib/gvc/gvcontext.c

index 84435d0abe5780598b7feb7c1902401dee1840de..aeb6582ff4fc8b5058883a45c977450498285451 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 February 13, 2016
        - Add cylinder shape for databases.
+       - Free installed plugins
 September 9, 2014
        - Add plain shape for use with HTML-like labels.
 August 12, 2014
index 7600e14ae169a80fe140c6b72a57aaf7afaca3ee..1ef25ba732a3136b59f46210f3c643031be42a6b 100644 (file)
@@ -75,6 +75,13 @@ int gvFreeContext(GVC_t * gvc)
 {
     GVG_t *gvg, *gvg_next;
     gvplugin_package_t *package, *package_next;
+    gvplugin_available_t *api, *api_next;
+
+#define ELEM(x) +1
+    /* See gvcext.h for APIS and gvcint.h for an example usage of "+1"
+       to get the number of APIs. */
+    unsigned int num_apis = APIS, i;
+#undef ELEM
 
     emit_once_reset();
     gvg_next = gvc->gvgs;
@@ -95,6 +102,12 @@ int gvFreeContext(GVC_t * gvc)
     if (gvc->input_filenames)
        free(gvc->input_filenames);
     textfont_dict_close(gvc);
+    for (i = 0; i != num_apis; ++i) {
+       for (api = gvc->apis[i]; api != NULL; api = api_next) {
+           api_next = api->next;
+           free(api);
+       }
+    }
     free(gvc);
     return (graphviz_errors + agerrors());
 }