1
0
Fork 0

(svn r22154) -Fix [FS#4529]: _current_company was modified when moving a client to spectators, causing issues in bankruptcy (Rubidium)

release/1.2
terkhen 2011-02-27 11:38:28 +00:00
parent 9ce2823959
commit 6e641777b1
1 changed files with 4 additions and 0 deletions

View File

@ -30,6 +30,7 @@
#include "network.h" #include "network.h"
#include "network_base.h" #include "network_base.h"
#include "network_client.h" #include "network_client.h"
#include "../core/backup_type.hpp"
#include "table/strings.h" #include "table/strings.h"
@ -1155,6 +1156,7 @@ void NetworkClientRequestMove(CompanyID company_id, const char *pass)
void NetworkClientsToSpectators(CompanyID cid) void NetworkClientsToSpectators(CompanyID cid)
{ {
Backup<CompanyByte> cur_company(_current_company, FILE_LINE);
/* If our company is changing owner, go to spectators */ /* If our company is changing owner, go to spectators */
if (cid == _local_company) SetLocalCompany(COMPANY_SPECTATOR); if (cid == _local_company) SetLocalCompany(COMPANY_SPECTATOR);
@ -1164,6 +1166,8 @@ void NetworkClientsToSpectators(CompanyID cid)
NetworkTextMessage(NETWORK_ACTION_COMPANY_SPECTATOR, CC_DEFAULT, false, ci->client_name); NetworkTextMessage(NETWORK_ACTION_COMPANY_SPECTATOR, CC_DEFAULT, false, ci->client_name);
ci->client_playas = COMPANY_SPECTATOR; ci->client_playas = COMPANY_SPECTATOR;
} }
cur_company.Restore();
} }
void NetworkUpdateClientName() void NetworkUpdateClientName()