(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.
This commit is contained in:
@@ -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. */
|
||||
|
Reference in New Issue
Block a user