mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-20 15:08:19 +00:00
CCharacterCore::Tick caused out of bounds
src/game/teamscore.cpp:27:78: runtime error: index -1 out of bounds for type 'int const[64]' #0 0xf5b948 in CTeamsCore::CanKeepHook(int, int) const src/game/teamscore.cpp:27 #1 0xf46fe1 in CCharacterCore::Tick(bool) src/game/gamecore.cpp:325 #2 0xaf7366 in CGameClient::DetectStrongHook() src/game/client/gameclient.cpp:2441 #3 0xadd734 in CGameClient::UpdatePrediction() src/game/client/gameclient.cpp:2249 #4 0xad6e17 in CGameClient::OnNewSnapshot() src/game/client/gameclient.cpp:1675 #5 0x522d55 in CClient::Update() src/engine/client/client.cpp:2767 #6 0x5333e4 in CClient::Run() src/engine/client/client.cpp:3237 #7 0x557fda in main src/engine/client/client.cpp:4341 #8 0x7f55e8c75cc9 in __libc_start_main ../csu/libc-start.c:308 #9 0x433e29 in _start (build/DDNet+0x433e29) src/game/teamscore.cpp:34:78: runtime error: index -1 out of bounds for type 'int const[64]' #0 0xf5be68 in CTeamsCore::CanCollide(int, int) const src/game/teamscore.cpp:34 #1 0xf46458 in CCharacterCore::Tick(bool) src/game/gamecore.cpp:271 #2 0xaf7374 in CGameClient::DetectStrongHook() src/game/client/gameclient.cpp:2442 #3 0xadd734 in CGameClient::UpdatePrediction() src/game/client/gameclient.cpp:2249 #4 0xad6e17 in CGameClient::OnNewSnapshot() src/game/client/gameclient.cpp:1675 #5 0x522d55 in CClient::Update() src/engine/client/client.cpp:2767 #6 0x5333e4 in CClient::Run() src/engine/client/client.cpp:3237 #7 0x557fda in main src/engine/client/client.cpp:4341 #8 0x7f55e8c75cc9 in __libc_start_main ../csu/libc-start.c:308 #9 0x433e29 in _start (build/DDNet+0x433e29)
This commit is contained in:
parent
476a912b3f
commit
ae1a266dac
|
@ -268,7 +268,7 @@ void CCharacterCore::Tick(bool UseInput)
|
|||
for(int i = 0; i < MAX_CLIENTS; i++)
|
||||
{
|
||||
CCharacterCore *pCharCore = m_pWorld->m_apCharacters[i];
|
||||
if(!pCharCore || pCharCore == this || (!(m_Super || pCharCore->m_Super) && (!m_pTeams->CanCollide(i, m_Id) || pCharCore->m_Solo || m_Solo)))
|
||||
if(!pCharCore || pCharCore == this || (!(m_Super || pCharCore->m_Super) && ((m_Id != -1 && !m_pTeams->CanCollide(i, m_Id)) || pCharCore->m_Solo || m_Solo)))
|
||||
continue;
|
||||
|
||||
vec2 ClosestPoint = closest_point_on_line(m_HookPos, NewPos, pCharCore->m_Pos);
|
||||
|
@ -322,7 +322,7 @@ void CCharacterCore::Tick(bool UseInput)
|
|||
if(m_HookedPlayer != -1)
|
||||
{
|
||||
CCharacterCore *pCharCore = m_pWorld->m_apCharacters[m_HookedPlayer];
|
||||
if(pCharCore && m_pTeams->CanKeepHook(m_Id, pCharCore->m_Id))
|
||||
if(pCharCore && m_Id != -1 && m_pTeams->CanKeepHook(m_Id, pCharCore->m_Id))
|
||||
m_HookPos = pCharCore->m_Pos;
|
||||
else
|
||||
{
|
||||
|
@ -575,7 +575,7 @@ bool CCharacterCore::IsSwitchActiveCb(int Number, void *pUser)
|
|||
{
|
||||
CCharacterCore *pThis = (CCharacterCore *)pUser;
|
||||
if(pThis->Collision()->m_pSwitchers)
|
||||
if(pThis->m_pTeams->Team(pThis->m_Id) != (pThis->m_pTeams->m_IsDDRace16 ? VANILLA_TEAM_SUPER : TEAM_SUPER))
|
||||
if(pThis->m_Id != -1 && pThis->m_pTeams->Team(pThis->m_Id) != (pThis->m_pTeams->m_IsDDRace16 ? VANILLA_TEAM_SUPER : TEAM_SUPER))
|
||||
return pThis->Collision()->m_pSwitchers[Number].m_Status[pThis->m_pTeams->Team(pThis->m_Id)];
|
||||
return false;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue