summaryrefslogtreecommitdiff
path: root/navit/maptool/boundaries.c
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2013-07-30 06:58:52 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2013-07-30 06:58:52 +0000
commit84415c195e6ea6dab8cfa8cf4ea79636d3a86d61 (patch)
tree0047c006aa2299aa8dbac4fc65928c058061628a /navit/maptool/boundaries.c
parent87e88675343d21cc25a5990a80cf1450a61e4538 (diff)
downloadnavit-84415c195e6ea6dab8cfa8cf4ea79636d3a86d61.tar.gz
Fix:maptool:Fix some memory leaks regarding boundary processing
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@5552 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/maptool/boundaries.c')
-rw-r--r--navit/maptool/boundaries.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/navit/maptool/boundaries.c b/navit/maptool/boundaries.c
index 23a6b57cb..d739ac73f 100644
--- a/navit/maptool/boundaries.c
+++ b/navit/maptool/boundaries.c
@@ -322,5 +322,34 @@ process_boundaries(FILE *boundaries, FILE *ways)
boundaries_list=process_boundaries_setup(boundaries, relations);
relations_process(relations, NULL, ways, NULL);
+ relations_destroy(relations);
return process_boundaries_finish(boundaries_list);
}
+
+void
+free_boundaries(GList *l)
+{
+ while (l) {
+ struct boundary *boundary=l->data;
+ GList *s=boundary->segments;
+ while (s) {
+ struct geom_poly_segment *seg=s->data;
+ g_free(seg->first);
+ g_free(seg);
+ s=g_list_next(s);
+ };
+ s=boundary->sorted_segments;
+ while (s) {
+ struct geom_poly_segment *seg=s->data;
+ g_free(seg->first);
+ g_free(seg);
+ s=g_list_next(s);
+ };
+ g_list_free(boundary->segments);
+ g_list_free(boundary->sorted_segments);
+ g_free(boundary->ib);
+ free_boundaries(boundary->children);
+ g_free(boundary);
+ l=g_list_next(l);
+ }
+}