1
0
forked from 0ad/0ad

Fix GetTerritoryPercentage when changing number of players

Check for player being out of bounds after m_TerritoryCellCounts may be
recomputed.

Differential Revision: https://code.wildfiregames.com/D2046
Reviewed by: @Stan
This was SVN commit r23510.
This commit is contained in:
Angen 2020-02-23 18:24:31 +00:00
parent b4da3388ec
commit 0b8aa7eb5a

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2019 Wildfire Games.
/* Copyright (C) 2020 Wildfire Games.
* This file is part of 0 A.D.
*
* 0 A.D. is free software: you can redistribute it and/or modify
@ -581,12 +581,13 @@ std::vector<STerritoryBoundary> CCmpTerritoryManager::ComputeBoundaries()
u8 CCmpTerritoryManager::GetTerritoryPercentage(player_id_t player)
{
if (player <= 0 || (size_t)player > m_TerritoryCellCounts.size())
if (player <= 0 || static_cast<size_t>(player) >= m_TerritoryCellCounts.size())
return 0;
CalculateTerritories();
if (m_TerritoryTotalPassableCellCount == 0)
// Territories may have been recalculated, check whether player is still there.
if (m_TerritoryTotalPassableCellCount == 0 || static_cast<size_t>(player) >= m_TerritoryCellCounts.size())
return 0;
u8 percentage = (m_TerritoryCellCounts[player] * 100) / m_TerritoryTotalPassableCellCount;