summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2009-02-07 18:09:30 +0000
committersmatz <smatz@openttd.org>2009-02-07 18:09:30 +0000
commita92653c800cd7abaeb801638d06c9f317ad85ad5 (patch)
tree5dd6e9a8e6184d104e3d281a26680e0a20468030
parent487b0ed95ec13a32b2f2db7b6212e4b76eed5332 (diff)
downloadopenttd-a92653c800cd7abaeb801638d06c9f317ad85ad5.tar.xz
(svn r15402) -Codechange: verify _current_company didn't change when executing a command
-rw-r--r--src/command.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/command.cpp b/src/command.cpp
index 34658a143..fea4e48e2 100644
--- a/src/command.cpp
+++ b/src/command.cpp
@@ -501,6 +501,8 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallbac
StringID error_part1 = GB(cmd, 16, 16);
_additional_cash_required = 0;
+ CompanyID old_company = _current_company;
+
/** Spectator has no rights except for the (dedicated) server which
* is/can be a spectator but as the server it can do anything */
if (_current_company == COMPANY_SPECTATOR && !_network_server) {
@@ -558,6 +560,7 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallbac
SetTownRatingTestMode(true);
res = proc(tile, flags, p1, p2, text);
SetTownRatingTestMode(false);
+ assert(cmd_id == CMD_COMPANY_CTRL || old_company == _current_company);
if (CmdFailed(res)) {
res.SetGlobalErrorMessage();
goto show_error;
@@ -595,6 +598,8 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallbac
* use the construction one */
res2 = proc(tile, flags | DC_EXEC, p1, p2, text);
+ assert(cmd_id == CMD_COMPANY_CTRL || old_company == _current_company);
+
/* If notest is on, it means the result of the test can be different than
* the real command.. so ignore the test */
if (!notest && !((cmd & CMD_NO_TEST_IF_IN_NETWORK) && _networking)) {