From 51b3282001e9da8032bbb6cb568f25e3c5a55bc0 Mon Sep 17 00:00:00 2001
From: ellson <devnull@localhost>
Date: Tue, 28 Feb 2006 18:40:00 +0000
Subject: [PATCH] ensure any previous layout is freed before generating new
 one.

---
 lib/gvc/gvlayout.c | 47 +++++++++++++++++++++++-----------------------
 1 file changed, 24 insertions(+), 23 deletions(-)

diff --git a/lib/gvc/gvlayout.c b/lib/gvc/gvlayout.c
index 9474635d9..1f7e0d8fe 100644
--- a/lib/gvc/gvlayout.c
+++ b/lib/gvc/gvlayout.c
@@ -49,29 +49,6 @@ int gvlayout_select(GVC_t * gvc, char *layout)
     return NO_SUPPORT;
 }
 
-/* gvLayoutJobs:
- * Layout input graph g based on layout engine attached to gvc.
- * Check that the root graph has been initialized. If not, initialize it.
- * Return 0 on success.
- */
-int gvLayoutJobs(GVC_t * gvc, graph_t * g)
-{
-    gvlayout_engine_t *gvle = gvc->layout.engine;
-
-    if (! gvle)
-	return -1;
-
-    graph_init(g, gvc->layout.features->flags & LAYOUT_USES_RANKDIR);
-    GD_drawing(g->root) = GD_drawing(g);
-    GD_gvc(g) = gvc;
-    if (gvle && gvle->layout) {
-	gvle->layout(g);
-	if (gvle->cleanup)
-	    GD_cleanup(g) = gvle->cleanup;
-    }
-    return 0;
-}
-
 /* gvFreeLayout:
  * Free layout resources.
  * First, if the graph has a layout-specific cleanup function attached,
@@ -92,3 +69,27 @@ int gvFreeLayout(GVC_t * gvc, graph_t * g)
     }
     return 0;
 }
+
+/* gvLayoutJobs:
+ * Layout input graph g based on layout engine attached to gvc.
+ * Check that the root graph has been initialized. If not, initialize it.
+ * Return 0 on success.
+ */
+int gvLayoutJobs(GVC_t * gvc, graph_t * g)
+{
+    gvlayout_engine_t *gvle = gvc->layout.engine;
+
+    if (! gvle)
+	return -1;
+    if (gvFreeLayout(gvc, g) != 0)
+	return -1;
+    graph_init(g, gvc->layout.features->flags & LAYOUT_USES_RANKDIR);
+    GD_drawing(g->root) = GD_drawing(g);
+    GD_gvc(g) = gvc;
+    if (gvle->layout)
+	gvle->layout(g);
+    /* record layout-specific cleanup function */
+    if (gvle->cleanup)
+	GD_cleanup(g) = gvle->cleanup;
+    return 0;
+}
-- 
2.40.0