]> de.git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
fix skinfile memory leaks on ZYM, DPM, and PSK model loaders, and move the skinfile...
authorhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Sat, 11 Mar 2006 16:57:48 +0000 (16:57 +0000)
committerhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Sat, 11 Mar 2006 16:57:48 +0000 (16:57 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@6096 d7cf8633-e32d-0410-b094-e92efae38249

model_alias.c
model_shared.c

index 823a576e3e412a5512b469e7a07d243963de6867..d9704c7f7d7b53c6fcb732c0a248a6d7b2eb631d 100644 (file)
@@ -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);
 }
 
index 558e0deaba79b3b3a83f45812b01852acfbcfefa..89384b544d0dda098c7dea6797570d7baaea9cf8 100644 (file)
@@ -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));