# HG changeset patch # User Matti Hamalainen # Date 1363382468 -7200 # Node ID 7c314ac342f4c45e66f1c13fae040174d10c246a # Parent 702fb015c844bdf21b881d893a20b3561106a651 Cleanups and plug some memory leaks. diff -r 702fb015c844 -r 7c314ac342f4 3x666.c --- 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; }