stop memory leaks in libmve
authorBradley Bell <btb@icculus.org>
Sat, 7 Jun 2003 20:53:38 +0000 (20:53 +0000)
committerBradley Bell <btb@icculus.org>
Sat, 7 Jun 2003 20:53:38 +0000 (20:53 +0000)
ChangeLog
libmve/mvelib.c
libmve/mveplay.c

index da51a55..19fe306 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2003-06-07  Taylor Richards  <taylor@icculus.org>
+
+       * libmve/mvelib.c, libmve/mveplay.c: stop memory leaks in libmve
+
 2003-06-07  Bradley Bell  <btb@icculus.org>
 
        * main/gamesave.c: comments
index a2b12c6..b3d5ca0 100644 (file)
@@ -577,6 +577,9 @@ static void _mvestream_free(MVESTREAM *movie)
     /* clear context and handlers */
     movie->context = NULL;
     memset(movie->handlers, 0, sizeof(movie->handlers));
+       
+    /* free the struct */
+    free(movie);
 }
 
 static void _mvestream_free_filehandle(MVESTREAM *movie)
@@ -589,6 +592,9 @@ static void _mvestream_free_filehandle(MVESTREAM *movie)
     /* clear context and handlers */
     movie->context = NULL;
     memset(movie->handlers, 0, sizeof(movie->handlers));
+       
+    /* free the struct */
+    free(movie);
 }
 
 /*
index 224eb91..3f025c3 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mveplay.c,v 1.12 2003-06-02 01:58:10 btb Exp $ */
+/* $Id: mveplay.c,v 1.13 2003-06-07 20:53:38 btb Exp $ */
 #ifdef HAVE_CONFIG_H
 #include <conf.h>
 #endif
@@ -519,7 +519,9 @@ static int create_videobuf_handler(unsigned char major, unsigned char minor, uns
        g_height = h << 3;
 
        /* TODO: * 4 causes crashes on some files */
-       g_vBackBuf1 = g_vBuffers = d_malloc(g_width * g_height * 8);
+       /* only malloc once */
+       if (g_vBuffers == NULL)
+               g_vBackBuf1 = g_vBuffers = d_malloc(g_width * g_height * 8);
        if (truecolor) {
                g_vBackBuf2 = (unsigned short *)g_vBackBuf1 + (g_width * g_height);
        } else {
@@ -810,6 +812,8 @@ void shutdownMovie(MVESTREAM *mve)
 
        timer_stop();
 
+       d_free(g_vBuffers);
+
 #ifdef DEBUG
        for (i = 0; i < 32*256; i++) {
                if (unhandled_chunks[i]) {