From d5b401918ef3ff2d490b8c4f47a881a959369d04 Mon Sep 17 00:00:00 2001 From: div0 Date: Tue, 15 Jul 2008 09:38:14 +0000 Subject: [PATCH] remove some more leaks git-svn-id: svn://svn.icculus.org/nexuiz/trunk@3837 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/bots.qc | 10 +++++++++- data/qcsrc/server/cl_client.qc | 2 ++ data/qcsrc/server/g_world.qc | 2 ++ data/qcsrc/server/vote.qc | 3 --- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/data/qcsrc/server/bots.qc b/data/qcsrc/server/bots.qc index be18d5a79..2e0c8114f 100644 --- a/data/qcsrc/server/bots.qc +++ b/data/qcsrc/server/bots.qc @@ -1494,7 +1494,7 @@ void bot_setnameandstuff() if(!cvar("g_campaign")) self.netname = strzone(strcat(prefix, name, suffix)); else - self.netname = name; + self.netname = strzone(name); }; void bot_endgame() @@ -1899,6 +1899,14 @@ void bot_relinkplayerlist() void() havocbot_setupbot; float JoinBestTeam(entity pl, float only_return_best, float forcebestteam); +void bot_clientdisconnect() +{ + if (clienttype(self) != CLIENTTYPE_BOT) + return; + strunzone(self.netname); + self.netname = string_null; +} + void bot_clientconnect() { if (clienttype(self) != CLIENTTYPE_BOT) diff --git a/data/qcsrc/server/cl_client.qc b/data/qcsrc/server/cl_client.qc index d29ef380e..57fbb30bf 100644 --- a/data/qcsrc/server/cl_client.qc +++ b/data/qcsrc/server/cl_client.qc @@ -1170,6 +1170,8 @@ void ClientDisconnect (void) { float save; + bot_clientdisconnect(); + if(entcs_start) detach_entcs(); diff --git a/data/qcsrc/server/g_world.qc b/data/qcsrc/server/g_world.qc index a0c8fcae2..b6dfc670e 100644 --- a/data/qcsrc/server/g_world.qc +++ b/data/qcsrc/server/g_world.qc @@ -725,6 +725,8 @@ void Maplist_Init() error("empty maplist, cannot select a new map"); Map_Current = bound(0, GetMaplistPosition(), Map_Count - 1); + if(Map_Current_Name) + strunzone(Map_Current_Name); Map_Current_Name = strzone(argv(Map_Current)); // will be automatically freed on exit thanks to DP // this may or may not be correct, but who cares, in the worst case a map // isn't chosen in the first pass that should have been diff --git a/data/qcsrc/server/vote.qc b/data/qcsrc/server/vote.qc index 5be98e7d7..4def9d63b 100644 --- a/data/qcsrc/server/vote.qc +++ b/data/qcsrc/server/vote.qc @@ -405,9 +405,6 @@ string VoteParse() { ++index; } - // necessary for some of the string operations - vote = strzone(vote); - return vote; } -- 2.39.2