From 575e349828abbaf950c11c50d1395c70a59c5a7a Mon Sep 17 00:00:00 2001 From: smatz Date: Sat, 7 Feb 2009 18:09:30 +0000 Subject: (svn r15402) -Codechange: verify _current_company didn't change when executing a command --- src/command.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') 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)) { -- cgit v1.2.3-70-g09d2