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
[email protected]
https://mail.gna.org/listinfo/warzone-dev