mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 01:58:19 +00:00
Fix client crash if cl_race_ghost_save_best 1
deletes last ghost
If the own ghost is the last element in the vector and deleted due to using the `cl_race_ghost_save_best 1` setting then the following accesses with index `Own` were out-of-bounds. Closes #8003.
This commit is contained in:
parent
99ee3f4fb9
commit
e50f8cfaa0
|
@ -985,28 +985,25 @@ void CMenus::UpdateOwnGhost(CGhostItem Item)
|
|||
if(m_vGhosts[i].m_Own)
|
||||
Own = i;
|
||||
|
||||
if(Own != -1)
|
||||
if(Own == -1)
|
||||
{
|
||||
if(g_Config.m_ClRaceGhostSaveBest)
|
||||
{
|
||||
if(Item.HasFile() || !m_vGhosts[Own].HasFile())
|
||||
DeleteGhostItem(Own);
|
||||
}
|
||||
if(m_vGhosts[Own].m_Time > Item.m_Time)
|
||||
{
|
||||
Item.m_Own = true;
|
||||
m_vGhosts[Own].m_Own = false;
|
||||
m_vGhosts[Own].m_Slot = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
Item.m_Own = false;
|
||||
Item.m_Slot = -1;
|
||||
}
|
||||
Item.m_Own = true;
|
||||
}
|
||||
else if(g_Config.m_ClRaceGhostSaveBest && (Item.HasFile() || !m_vGhosts[Own].HasFile()))
|
||||
{
|
||||
Item.m_Own = true;
|
||||
DeleteGhostItem(Own);
|
||||
}
|
||||
else if(m_vGhosts[Own].m_Time > Item.m_Time)
|
||||
{
|
||||
Item.m_Own = true;
|
||||
m_vGhosts[Own].m_Own = false;
|
||||
m_vGhosts[Own].m_Slot = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
Item.m_Own = true;
|
||||
Item.m_Own = false;
|
||||
Item.m_Slot = -1;
|
||||
}
|
||||
|
||||
Item.m_Date = std::time(0);
|
||||
|
|
Loading…
Reference in a new issue