This fixes the leaks from pie_TerrainInit(). per, I didn't know the best place for pie_TerrainCleanup(), so I stuck it in stageThreeShutDown(). Move it to where ever you think is best.
Index: lib/ivis_common/piedef.h =================================================================== --- lib/ivis_common/piedef.h (revision 4972) +++ lib/ivis_common/piedef.h (working copy) @@ -106,6 +106,7 @@ extern void pie_DrawImage(PIEIMAGE *image, PIERECT *dest); void pie_TerrainInit(int sizex, int sizey); +void pie_TerrainCleanup(void); void pie_DrawTerrain(int mapx, int mapy); void pie_DrawTerrainTriangle(int index, const TERRAIN_VERTEX *aVrts); void pie_DrawWaterTriangle(const TERRAIN_VERTEX *aVrts); Index: lib/ivis_opengl/piedraw.c =================================================================== --- lib/ivis_opengl/piedraw.c (revision 4972) +++ lib/ivis_opengl/piedraw.c (working copy) @@ -778,6 +778,15 @@ rowLength = sizex; } +void pie_TerrainCleanup() +{ + if(aColour) free(aColour); + if(aTexCoord) free(aTexCoord); + if(aVertex) free(aVertex); + aColour = aTexCoord = aVertex = NULL; + +} + void pie_DrawTerrain(int mapx, int mapy) { glEnableClientState(GL_COLOR_ARRAY); Index: src/init.c =================================================================== --- src/init.c (revision 4972) +++ src/init.c (working copy) @@ -1157,6 +1157,8 @@ { initPlayerColours(); // reset colours leaving multiplayer game. } + + pie_TerrainCleanup(); setScriptWinLoseVideo(PLAY_NONE);
Index: lib/ivis_common/piedef.h =================================================================== --- lib/ivis_common/piedef.h (revision 4972) +++ lib/ivis_common/piedef.h (working copy) @@ -106,6 +106,7 @@ extern void pie_DrawImage(PIEIMAGE *image, PIERECT *dest); void pie_TerrainInit(int sizex, int sizey); +void pie_TerrainCleanup(void); void pie_DrawTerrain(int mapx, int mapy); void pie_DrawTerrainTriangle(int index, const TERRAIN_VERTEX *aVrts); void pie_DrawWaterTriangle(const TERRAIN_VERTEX *aVrts); Index: lib/ivis_opengl/piedraw.c =================================================================== --- lib/ivis_opengl/piedraw.c (revision 4972) +++ lib/ivis_opengl/piedraw.c (working copy) @@ -778,6 +778,15 @@ rowLength = sizex; } +void pie_TerrainCleanup() +{ + if(aColour) free(aColour); + if(aTexCoord) free(aTexCoord); + if(aVertex) free(aVertex); + aColour = aTexCoord = aVertex = NULL; + +} + void pie_DrawTerrain(int mapx, int mapy) { glEnableClientState(GL_COLOR_ARRAY); Index: src/init.c =================================================================== --- src/init.c (revision 4972) +++ src/init.c (working copy) @@ -1157,6 +1157,8 @@ { initPlayerColours(); // reset colours leaving multiplayer game. } + + pie_TerrainCleanup(); setScriptWinLoseVideo(PLAY_NONE);
_______________________________________________ Warzone-dev mailing list Warzone-dev@gna.org https://mail.gna.org/listinfo/warzone-dev