Bladeren bron

virtual raster: avoid recursion to self

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@73378 15284696-431f-4ddb-bdfa-cd5b030d7da7
Markus Metz 6 jaren geleden
bovenliggende
commit
0e416d264e
2 gewijzigde bestanden met toevoegingen van 11 en 2 verwijderingen
  1. 5 2
      lib/raster/vrt.c
  2. 6 0
      raster/r.buildvrt/main.c

+ 5 - 2
lib/raster/vrt.c

@@ -1,7 +1,7 @@
 /*!
-  \file lib/raster/gdal.c
+  \file lib/raster/vrt.c
   
-  \brief Raster Library - Utilization of GDAL library.
+  \brief Raster Library - virtual GRASS raster maps.
   
   (C) 2010 by the GRASS Development Team
   
@@ -82,6 +82,9 @@ struct R_vrt *Rast_get_vrt(const char *vname, const char *vmapset)
 	if ((mapset = G_find_raster(name, "")) == NULL)
 	    G_fatal_error(_("Tile raster map <%s> not found"), name);
 
+	if (strcmp(name, vname) == 0)
+	    G_fatal_error(_("A virtual raster can not contain itself"));
+
 	if (tilecount >= talloc) {
 	    talloc += 100;
 	    ti = G_realloc(ti, talloc * sizeof(struct tileinfo));

+ 6 - 0
raster/r.buildvrt/main.c

@@ -146,6 +146,9 @@ int main(int argc, char *argv[])
 	    if ((mapset = G_find_raster(name, "")) == NULL)
 		G_fatal_error(_("Input raster map <%s> not found"), name);
 
+	    if (strcmp(name, parm.output->answer) == 0)
+		G_fatal_error(_("Input and output raster map can not be identical"));
+
 	    Rast_read_fp_range(name, mapset, &fprange);
 	    dmin = fprange.min;
 	    if (Rast_is_d_null_value(&dmin)) {
@@ -196,6 +199,9 @@ int main(int argc, char *argv[])
 	    if ((mapset = G_find_raster(name, "")) == NULL)
 		G_fatal_error(_("Input raster map <%s> not found"), name);
 
+	    if (strcmp(name, parm.output->answer) == 0)
+		G_fatal_error(_("Input and output raster map can not be identical"));
+
 	    Rast_read_fp_range(name, mapset, &fprange);
 	    dmin = fprange.min;
 	    if (Rast_is_d_null_value(&dmin)) {