소스 검색

fix memory leak

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@46444 15284696-431f-4ddb-bdfa-cd5b030d7da7
Markus Metz 14 년 전
부모
커밋
3faae48d30
2개의 변경된 파일7개의 추가작업 그리고 3개의 파일을 삭제
  1. 6 2
      lib/vector/Vlib/break_lines.c
  2. 1 1
      lib/vector/Vlib/build_nat.c

+ 6 - 2
lib/vector/Vlib/break_lines.c

@@ -216,6 +216,8 @@ Vect_break_lines_list(struct Map_info *Map, struct ilist *List_break,
 
 	    btype = Vect_read_line(Map, BPoints, BCats, bline);
 
+	    AXLines = NULL;
+	    BXLines = NULL;
 	    Vect_line_intersection(APoints, BPoints, &AXLines, &BXLines,
 				   &naxlines, &nbxlines, 0);
 	    G_debug(3, "  naxlines = %d nbxlines = %d", naxlines, nbxlines);
@@ -292,9 +294,10 @@ Vect_break_lines_list(struct Map_info *Map, struct ilist *List_break,
 		    }
 		    Vect_destroy_line_struct(AXLines[k]);
 		}
-		G_free(AXLines);
 		nbreaks += naxlines - 1;
 	    }
+	    if (AXLines)
+		G_free(AXLines);
 
 	    if (nbxlines > 0) {
 		if (aline != bline) {	/* Self intersection, do not write twice, TODO: is it OK? */
@@ -341,8 +344,9 @@ Vect_break_lines_list(struct Map_info *Map, struct ilist *List_break,
 		    for (k = 0; k < nbxlines; k++)
 			Vect_destroy_line_struct(BXLines[k]);
 		}
-		G_free(BXLines);
 	    }
+	    if (BXLines)
+		G_free(BXLines);
 	    if (Err) {
 		for (l = 0; l < nx; l++) {	/* Write out errors */
 		    Vect_reset_line(Points);

+ 1 - 1
lib/vector/Vlib/build_nat.c

@@ -564,7 +564,7 @@ int Vect_build_nat(struct Map_info *Map, int build)
 		if (format == G_INFO_FORMAT_PLAIN)
 		    fprintf(stderr, "%d..", i);
 		else
-		    fprintf(stderr, "%11d\b\b\b\b\b\b\b\b\b\b\b", i);
+		    fprintf(stderr, "%10d\b\b\b\b\b\b\b\b\b\b", i);
 	    }
 
 	    i++;