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

Reply via email to