summaryrefslogtreecommitdiff
path: root/src/newgrf_industrytiles.cpp
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2011-07-03 14:32:15 +0000
committerfrosch <frosch@openttd.org>2011-07-03 14:32:15 +0000
commit2a55273291191a25ff827321f9d5203e05f12c76 (patch)
tree9d3d49ae781ccb0f19f33f86d370da15e286e586 /src/newgrf_industrytiles.cpp
parent2158f4f1bf9e8bafd8602b07652f24019ecde8c9 (diff)
downloadopenttd-2a55273291191a25ff827321f9d5203e05f12c76.tar.xz
(svn r22629) -Fix [FS#4599]: Remove all usages of the ErrorRefStack. It was continuously overwritten by e.g. industry prospection without closing the old error window; also StopTextRefStackUsage() was not called for errors returned by commands (which caused FS#4599). Now return in the CommandCost result whether the textref stack needs to be used, and store a copy of the stack values in the error window just like for the normal string parameters.
Diffstat (limited to 'src/newgrf_industrytiles.cpp')
-rw-r--r--src/newgrf_industrytiles.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/newgrf_industrytiles.cpp b/src/newgrf_industrytiles.cpp
index efaa5c3f6..522296530 100644
--- a/src/newgrf_industrytiles.cpp
+++ b/src/newgrf_industrytiles.cpp
@@ -308,17 +308,18 @@ CommandCost PerformIndustryTileSlopeCheck(TileIndex ind_base_tile, TileIndex ind
}
if (callback_res == 0x400) return CommandCost();
- /* Copy some parameters from the registers to the error message text ref. stack */
- SwitchToErrorRefStack();
- StartTextRefStackUsage(4);
- SwitchToNormalRefStack();
-
+ CommandCost res;
switch (callback_res) {
- case 0x401: return_cmd_error(STR_ERROR_SITE_UNSUITABLE);
- case 0x402: return_cmd_error(STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST);
- case 0x403: return_cmd_error(STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT);
- default: return_cmd_error(GetGRFStringID(its->grf_prop.grffile->grfid, 0xD000 + callback_res));
+ case 0x401: res = CommandCost(STR_ERROR_SITE_UNSUITABLE);
+ case 0x402: res = CommandCost(STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST);
+ case 0x403: res = CommandCost(STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT);
+ default: res = CommandCost(GetGRFStringID(its->grf_prop.grffile->grfid, 0xD000 + callback_res));
}
+
+ /* Copy some parameters from the registers to the error message text ref. stack */
+ res.UseTextRefStack(4);
+
+ return res;
}
/* Simple wrapper for GetHouseCallback to keep the animation unified. */