[mapserver-commits] r12518 - trunk/mapserver/mapcache/src

svn at osgeo.org svn at osgeo.org
Tue Sep 6 09:50:10 EDT 2011


Author: tbonfort
Date: 2011-09-06 06:50:10 -0700 (Tue, 06 Sep 2011)
New Revision: 12518

Modified:
   trunk/mapserver/mapcache/src/mapcache_seed.c
Log:
fix seeder requesting invalid tiles if metasize = 1x1



Modified: trunk/mapserver/mapcache/src/mapcache_seed.c
===================================================================
--- trunk/mapserver/mapcache/src/mapcache_seed.c	2011-09-06 12:05:07 UTC (rev 12517)
+++ trunk/mapserver/mapcache/src/mapcache_seed.c	2011-09-06 13:50:10 UTC (rev 12518)
@@ -683,14 +683,21 @@
     /* adjust our grid limits so they align on the metatile limits
      * we need to do this because the seeder does not check for individual tiles, it
      * goes from one metatile to the next*/
-
     for(n=0;n<grid_link->grid->nlevels;n++) {
-      grid_link->grid_limits[n][0] = (grid_link->grid_limits[n][0]/tileset->metasize_x)*tileset->metasize_x;
-      grid_link->grid_limits[n][1] = (grid_link->grid_limits[n][1]/tileset->metasize_y)*tileset->metasize_y;
-      grid_link->grid_limits[n][2] = (grid_link->grid_limits[n][2]/tileset->metasize_x+1)*tileset->metasize_x;
-      grid_link->grid_limits[n][3] = (grid_link->grid_limits[n][3]/tileset->metasize_y+1)*tileset->metasize_y;
+       if(tileset->metasize_x > 1) {
+          grid_link->grid_limits[n][0] = (grid_link->grid_limits[n][0]/tileset->metasize_x)*tileset->metasize_x;
+          grid_link->grid_limits[n][2] = (grid_link->grid_limits[n][2]/tileset->metasize_x+1)*tileset->metasize_x;
+          if( grid_link->grid_limits[n][2] > grid_link->grid->levels[n]->maxx)
+             grid_link->grid_limits[n][2] = grid_link->grid->levels[n]->maxx;
+       }
+       if(tileset->metasize_y > 1) {
+          grid_link->grid_limits[n][1] = (grid_link->grid_limits[n][1]/tileset->metasize_y)*tileset->metasize_y;
+          grid_link->grid_limits[n][3] = (grid_link->grid_limits[n][3]/tileset->metasize_y+1)*tileset->metasize_y;
+          if( grid_link->grid_limits[n][3] > grid_link->grid->levels[n]->maxy)
+             grid_link->grid_limits[n][3] = grid_link->grid->levels[n]->maxy;
+       }
     }
-    
+
     /* validate the supplied dimensions */
     if (!apr_is_empty_array(tileset->dimensions)) {
 



More information about the mapserver-commits mailing list