changeset 24:7c314ac342f4

Cleanups and plug some memory leaks.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 15 Mar 2013 23:21:08 +0200
parents 702fb015c844
children f896fe6a98da
files 3x666.c
diffstat 1 files changed, 17 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/3x666.c	Fri Mar 15 21:32:04 2013 +0200
+++ b/3x666.c	Fri Mar 15 23:21:08 2013 +0200
@@ -363,7 +363,7 @@
     SDL_Color pal[SET_VID_COLORS];
     int i, a = 3, b = 0;
 
-    for (i = 255; i; i--)
+    for (i = SET_VID_COLORS - 1; i >= 0; i--)
     {
         int n = (i + 128) & 255;
         pal[n].r =  (abs(i - 140) >> a) & 255;
@@ -433,7 +433,8 @@
     22, 17, 17, 22
 };
 
-int *drum0, *drum1;
+int *drum0 = NULL,
+    *drum1 = NULL;
 
 
 /* sampling sucks! */
@@ -466,6 +467,12 @@
 }
 
 
+void audio_close()
+{
+    if (drum0) free(drum0);
+    if (drum1) free(drum1);
+}
+
 static int engineRenderAudio(Sint32 *stream)
 {
     static int rowno = 0;
@@ -915,6 +922,8 @@
     int flagz = 0, flixtim = 0;
     char *phiword = NULL, *dizainword = NULL;
 
+    memset(&engine, 0, sizeof(engine));
+
     dmPrint(
     SET_PROG_NAME " by Ocsa (PWP) (c) 1998\n"
     "libSDL port by ccr/TNSP^PWP (c) 2013\n");
@@ -1150,8 +1159,13 @@
     SDL_PauseAudio(1);
     SDL_UnlockAudio();
 
+    audio_close();
+
     if (initSDL)
         SDL_Quit();
-    
+
+    if (engine.mixBuf)
+        free(engine.mixBuf);
+
     return 0;
 }