changeset 7216:a6efdf23702a draft

(svn r10494) -Fix (r10490): possible null dereference in some exotic newgrfs.
author rubidium <rubidium@openttd.org>
date Mon, 09 Jul 2007 20:08:25 +0000
parents ba8faf180ec2
children 1d6954b57053
files src/industry_cmd.cpp src/newgrf_industrytiles.cpp src/newgrf_industrytiles.h
diffstat 3 files changed, 8 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/industry_cmd.cpp
+++ b/src/industry_cmd.cpp
@@ -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
+++ b/src/newgrf_industrytiles.cpp
@@ -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
+++ b/src/newgrf_industrytiles.h
@@ -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 */