diff options
| author | oy <Tom_Adams@web.de> | 2010-12-16 03:29:08 +0100 |
|---|---|---|
| committer | oy <Tom_Adams@web.de> | 2010-12-16 03:29:08 +0100 |
| commit | 0121f273112624d531d57fb37cb1bdf9e7c537df (patch) | |
| tree | ed517e71def6310b13e2ab491ce1b6bee4ac904d /src/game/server/player.cpp | |
| parent | 54f138f89445def6060209d21f153b1e5378d58d (diff) | |
| download | zcatch-0121f273112624d531d57fb37cb1bdf9e7c537df.tar.gz zcatch-0121f273112624d531d57fb37cb1bdf9e7c537df.zip | |
fixed server crash on too many snap items. Closes #317
Diffstat (limited to 'src/game/server/player.cpp')
| -rw-r--r-- | src/game/server/player.cpp | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/src/game/server/player.cpp b/src/game/server/player.cpp index e76c5e56..03d715a4 100644 --- a/src/game/server/player.cpp +++ b/src/game/server/player.cpp @@ -78,24 +78,29 @@ void CPlayer::Snap(int SnappingClient) if(!Server()->ClientIngame(m_ClientID)) return; - CNetObj_ClientInfo *ClientInfo = static_cast<CNetObj_ClientInfo *>(Server()->SnapNewItem(NETOBJTYPE_CLIENTINFO, m_ClientID, sizeof(CNetObj_ClientInfo))); - StrToInts(&ClientInfo->m_Name0, 6, Server()->ClientName(m_ClientID)); - StrToInts(&ClientInfo->m_Skin0, 6, m_TeeInfos.m_SkinName); - ClientInfo->m_UseCustomColor = m_TeeInfos.m_UseCustomColor; - ClientInfo->m_ColorBody = m_TeeInfos.m_ColorBody; - ClientInfo->m_ColorFeet = m_TeeInfos.m_ColorFeet; - - CNetObj_PlayerInfo *Info = static_cast<CNetObj_PlayerInfo *>(Server()->SnapNewItem(NETOBJTYPE_PLAYERINFO, m_ClientID, sizeof(CNetObj_PlayerInfo))); - - Info->m_Latency = m_Latency.m_Min; - Info->m_LatencyFlux = m_Latency.m_Max-m_Latency.m_Min; - Info->m_Local = 0; - Info->m_ClientId = m_ClientID; - Info->m_Score = m_Score; - Info->m_Team = m_Team; + CNetObj_ClientInfo *pClientInfo = static_cast<CNetObj_ClientInfo *>(Server()->SnapNewItem(NETOBJTYPE_CLIENTINFO, m_ClientID, sizeof(CNetObj_ClientInfo))); + if(!pClientInfo) + return; + + StrToInts(&pClientInfo->m_Name0, 6, Server()->ClientName(m_ClientID)); + StrToInts(&pClientInfo->m_Skin0, 6, m_TeeInfos.m_SkinName); + pClientInfo->m_UseCustomColor = m_TeeInfos.m_UseCustomColor; + pClientInfo->m_ColorBody = m_TeeInfos.m_ColorBody; + pClientInfo->m_ColorFeet = m_TeeInfos.m_ColorFeet; + + CNetObj_PlayerInfo *pPlayerInfo = static_cast<CNetObj_PlayerInfo *>(Server()->SnapNewItem(NETOBJTYPE_PLAYERINFO, m_ClientID, sizeof(CNetObj_PlayerInfo))); + if(!pPlayerInfo) + return; + + pPlayerInfo->m_Latency = m_Latency.m_Min; + pPlayerInfo->m_LatencyFlux = m_Latency.m_Max-m_Latency.m_Min; + pPlayerInfo->m_Local = 0; + pPlayerInfo->m_ClientId = m_ClientID; + pPlayerInfo->m_Score = m_Score; + pPlayerInfo->m_Team = m_Team; if(m_ClientID == SnappingClient) - Info->m_Local = 1; + pPlayerInfo->m_Local = 1; } void CPlayer::OnDisconnect() |