From: havoc Date: Mon, 10 Feb 2003 23:55:33 +0000 (+0000) Subject: fix win32 stack overflows in CL_ParseServerInfo, it was choking on the sheer quantity... X-Git-Tag: xonotic-v0.1.0preview~6774 X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=commitdiff_plain;h=8f3d959ac85f03156169ab23784ed23b2aeaa7de fix win32 stack overflows in CL_ParseServerInfo, it was choking on the sheer quantity of memory used by model and sound precache names git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@2731 d7cf8633-e32d-0410-b094-e92efae38249 --- diff --git a/cl_parse.c b/cl_parse.c index b15f72cf..8b6c8d2b 100644 --- a/cl_parse.c +++ b/cl_parse.c @@ -320,13 +320,14 @@ CL_ParseServerInfo ================== */ qbyte entlife[MAX_EDICTS]; +// FIXME: this is a lot of memory to be keeping around, this needs to be dynamically allocated and freed +static char parse_model_precache[MAX_MODELS][MAX_QPATH]; +static char parse_sound_precache[MAX_SOUNDS][MAX_QPATH]; void CL_ParseServerInfo (void) { char *str; int i; int nummodels, numsounds; - char model_precache[MAX_MODELS][MAX_QPATH]; - char sound_precache[MAX_SOUNDS][MAX_QPATH]; entity_t *ent; Con_DPrintf ("Serverinfo packet received.\n"); @@ -396,7 +397,7 @@ void CL_ParseServerInfo (void) Host_Error ("Server sent too many model precaches\n"); if (strlen(str) >= MAX_QPATH) Host_Error ("Server sent a precache name of %i characters (max %i)", strlen(str), MAX_QPATH - 1); - strcpy (model_precache[nummodels], str); + strcpy (parse_model_precache[nummodels], str); Mod_TouchModel (str); } @@ -411,7 +412,7 @@ void CL_ParseServerInfo (void) Host_Error ("Server sent too many sound precaches\n"); if (strlen(str) >= MAX_QPATH) Host_Error ("Server sent a precache name of %i characters (max %i)", strlen(str), MAX_QPATH - 1); - strcpy (sound_precache[numsounds], str); + strcpy (parse_sound_precache[numsounds], str); S_TouchSound (str); } @@ -422,16 +423,16 @@ void CL_ParseServerInfo (void) // world model CL_KeepaliveMessage (); - cl.model_precache[1] = Mod_ForName (model_precache[1], false, false, true); + cl.model_precache[1] = Mod_ForName (parse_model_precache[1], false, false, true); if (cl.model_precache[1] == NULL) - Con_Printf("Map %s not found\n", model_precache[1]); + Con_Printf("Map %s not found\n", parse_model_precache[1]); // normal models for (i=2 ; i