about summary refs log tree commit diff
path: root/src/game/server/player.cpp
diff options
context:
space:
mode:
authoroy <Tom_Adams@web.de>2010-12-16 03:29:08 +0100
committeroy <Tom_Adams@web.de>2010-12-16 03:29:08 +0100
commit0121f273112624d531d57fb37cb1bdf9e7c537df (patch)
treeed517e71def6310b13e2ab491ce1b6bee4ac904d /src/game/server/player.cpp
parent54f138f89445def6060209d21f153b1e5378d58d (diff)
downloadzcatch-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.cpp37
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()