Переглянути джерело

rtree: free all memory

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@54931 15284696-431f-4ddb-bdfa-cd5b030d7da7
Markus Metz 12 роки тому
батько
коміт
a2524a48d0
2 змінених файлів з 12 додано та 1 видалено
  1. 11 0
      lib/vector/rtree/index.c
  2. 1 1
      lib/vector/rtree/rect.c

+ 11 - 0
lib/vector/rtree/index.c

@@ -226,6 +226,17 @@ void RTreeDestroyTree(struct RTree *t)
     assert(t);
 
     if (t->fd > -1) {
+	int j, k;
+
+	for (i = 0; i < MAXLEVEL; i++) {
+	    for (j = 0; j < NODE_BUFFER_SIZE; j++) {
+		for (k = 0; k < MAXCARD; k++) {
+		    RTreeFreeBoundary(&t->nb[i][j].n.branch[k].rect);
+		}
+		free(t->nb[i][j].n.branch);
+	    }
+	}
+
 	if (t->free_nodes.alloc)
 	    free(t->free_nodes.pos);
 	free(t->nb[0]);

+ 1 - 1
lib/vector/rtree/rect.c

@@ -101,7 +101,7 @@ RectReal *RTreeAllocBoundary(struct RTree *t)
 void RTreeFreeBoundary(struct RTree_Rect *r)
 {
     assert(r);
-    if(r->boundary)
+    if (r->boundary)
         free(r->boundary);
     r->boundary = NULL;
 }