From: havoc Date: Sat, 11 Mar 2006 16:57:48 +0000 (+0000) Subject: fix skinfile memory leaks on ZYM, DPM, and PSK model loaders, and move the skinfile... X-Git-Tag: xonotic-v0.1.0preview~4222 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=b9991114f6361af6266453c8d18c4f1d351c55a6;p=xonotic%2Fdarkplaces.git fix skinfile memory leaks on ZYM, DPM, and PSK model loaders, and move the skinfile allocations to the model's memory pool even though they are temporary git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@6096 d7cf8633-e32d-0410-b094-e92efae38249 --- diff --git a/model_alias.c b/model_alias.c index 823a576e..d9704c7f 100644 --- a/model_alias.c +++ b/model_alias.c @@ -1462,6 +1462,7 @@ void Mod_ZYMOTICMODEL_Load(model_t *mod, void *buffer, void *bufferend) Mem_Free(vertbonecounts); Mem_Free(verts); Mem_Free(outtexcoord2f); + Mod_FreeSkinFiles(skinfiles); } void Mod_DARKPLACESMODEL_Load(model_t *mod, void *buffer, void *bufferend) @@ -1687,6 +1688,7 @@ void Mod_DARKPLACESMODEL_Load(model_t *mod, void *buffer, void *bufferend) dpmmesh++; } + Mod_FreeSkinFiles(skinfiles); } static void Mod_PSKMODEL_AnimKeyToMatrix(float *origin, float *quat, matrix4x4_t *m) @@ -2235,5 +2237,6 @@ void Mod_PSKMODEL_Load(model_t *mod, void *buffer, void *bufferend) Mod_Alias_Mesh_CompileFrameZero(mesh); Mem_Free(animfilebuffer); + Mod_FreeSkinFiles(skinfiles); } diff --git a/model_shared.c b/model_shared.c index 558e0dea..89384b54 100644 --- a/model_shared.c +++ b/model_shared.c @@ -1185,12 +1185,12 @@ tag_torso, // If it's the first file we parse if (skinfile == NULL) { - skinfile = (skinfile_t *)Mem_Alloc(tempmempool, sizeof(skinfile_t)); + skinfile = (skinfile_t *)Mem_Alloc(loadmodel->mempool, sizeof(skinfile_t)); first = skinfile; } else { - skinfile->next = (skinfile_t *)Mem_Alloc(tempmempool, sizeof(skinfile_t)); + skinfile->next = (skinfile_t *)Mem_Alloc(loadmodel->mempool, sizeof(skinfile_t)); skinfile = skinfile->next; } skinfile->next = NULL; @@ -1223,7 +1223,7 @@ tag_torso, if (words == 3) { Con_DPrintf("Mod_LoadSkinFiles: parsed mesh \"%s\" shader replacement \"%s\"\n", word[1], word[2]); - skinfileitem = (skinfileitem_t *)Mem_Alloc(tempmempool, sizeof(skinfileitem_t)); + skinfileitem = (skinfileitem_t *)Mem_Alloc(loadmodel->mempool, sizeof(skinfileitem_t)); skinfileitem->next = skinfile->items; skinfile->items = skinfileitem; strlcpy (skinfileitem->name, word[1], sizeof (skinfileitem->name)); @@ -1244,7 +1244,7 @@ tag_torso, { // mesh shader name, like "U_RArm,models/players/Legoman/BikerA1.tga" Con_DPrintf("Mod_LoadSkinFiles: parsed mesh \"%s\" shader replacement \"%s\"\n", word[0], word[2]); - skinfileitem = (skinfileitem_t *)Mem_Alloc(tempmempool, sizeof(skinfileitem_t)); + skinfileitem = (skinfileitem_t *)Mem_Alloc(loadmodel->mempool, sizeof(skinfileitem_t)); skinfileitem->next = skinfile->items; skinfile->items = skinfileitem; strlcpy (skinfileitem->name, word[0], sizeof (skinfileitem->name));