(svn r10494) -Fix (r10490): possible null dereference in some exotic newgrfs.
authorrubidium
Mon, 09 Jul 2007 20:08:25 +0000
changeset 7216 2bb13ff061b1
parent 7215 7f90af37655d
child 7217 ff5b3c502e84
(svn r10494) -Fix (r10490): possible null dereference in some exotic newgrfs.
src/industry_cmd.cpp
src/newgrf_industrytiles.cpp
src/newgrf_industrytiles.h
--- a/src/industry_cmd.cpp	Mon Jul 09 19:38:12 2007 +0000
+++ b/src/industry_cmd.cpp	Mon Jul 09 20:08:25 2007 +0000
@@ -1191,7 +1191,7 @@
 
 			if (HASBIT(its->callback_flags, CBM_INDT_SHAPE_CHECK)) {
 				if (custom_shape_check != NULL) *custom_shape_check = true;
-				if (!PerformIndustryTileSlopeCheck(cur_tile, its, it->gfx)) return false;
+				if (!PerformIndustryTileSlopeCheck(cur_tile, its, type, it->gfx)) return false;
 			} else {
 				if (ind_behav & INDUSTRYBEH_BUILT_ONWATER) {
 					/* As soon as the tile is not water, bail out.
--- a/src/newgrf_industrytiles.cpp	Mon Jul 09 19:38:12 2007 +0000
+++ b/src/newgrf_industrytiles.cpp	Mon Jul 09 20:08:25 2007 +0000
@@ -229,9 +229,13 @@
 	}
 }
 
-bool PerformIndustryTileSlopeCheck(TileIndex tile, const IndustryTileSpec *its, IndustryGfx gfx)
+bool PerformIndustryTileSlopeCheck(TileIndex tile, const IndustryTileSpec *its, IndustryType type, IndustryGfx gfx)
 {
-	uint16 callback_res = GetIndustryTileCallback(CBID_INDTILE_SHAPE_CHECK, 0, 0, gfx, NULL, tile);
+	Industry ind;
+	ind.xy = 0;
+	ind.type = type;
+
+	uint16 callback_res = GetIndustryTileCallback(CBID_INDTILE_SHAPE_CHECK, 0, 0, gfx, &ind, tile);
 	if (its->grf_prop.grffile->grf_version < 7) {
 		return callback_res != 0;
 	}
--- a/src/newgrf_industrytiles.h	Mon Jul 09 19:38:12 2007 +0000
+++ b/src/newgrf_industrytiles.h	Mon Jul 09 20:08:25 2007 +0000
@@ -7,6 +7,6 @@
 
 bool DrawNewIndustryTile(TileInfo *ti, Industry *i, IndustryGfx gfx, const IndustryTileSpec *inds);
 uint16 GetIndustryTileCallback(uint16 callback, uint32 param1, uint32 param2, IndustryGfx gfx_id, Industry *industry, TileIndex tile);
-bool PerformIndustryTileSlopeCheck(TileIndex tile, const IndustryTileSpec *its, IndustryGfx gfx);
+bool PerformIndustryTileSlopeCheck(TileIndex tile, const IndustryTileSpec *its, IndustryType type, IndustryGfx gfx);
 
 #endif /* NEWGRF_INDUSTRYTILES_H */