[vlc-devel] [PATCH] Fix memory leaks and correct one delete/delete[] missmach

Daniel Winzen d at winzen4.de
Thu Apr 30 21:30:14 CEST 2015


---
 doc/libvlc/libvlc_DVD_ripper.c  | 5 ++++-
 modules/access/dtv/bdagraph.cpp | 2 +-
 modules/access/zip/zipstream.c  | 5 ++++-
 modules/codec/quicktime.c       | 1 +
 modules/demux/mp4/mp4.c         | 1 +
 5 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/doc/libvlc/libvlc_DVD_ripper.c b/doc/libvlc/libvlc_DVD_ripper.c
index 57fc896..7a6e778 100644
--- a/doc/libvlc/libvlc_DVD_ripper.c
+++ b/doc/libvlc/libvlc_DVD_ripper.c
@@ -155,7 +155,10 @@ void on_run(GtkWidget *widget, gpointer data) {
     transcode = get_transcode_string(preset);
     free(preset);
     sout = malloc((strlen(transcode)+strlen(file_begin)+strlen(dest)+strlen(file_end)+1) * sizeof(char));
-    if(sout == NULL) return;
+    if(sout == NULL) {
+        free(handle);
+        return;
+    }
     strncpy(sout, transcode, strlen(transcode)+1);
     strncat(sout, file_begin, strlen(file_begin));
     strncat(sout, dest, strlen(dest));
diff --git a/modules/access/dtv/bdagraph.cpp b/modules/access/dtv/bdagraph.cpp
index 997c5b4..17cfd0c 100644
--- a/modules/access/dtv/bdagraph.cpp
+++ b/modules/access/dtv/bdagraph.cpp
@@ -3370,7 +3370,7 @@ IPin* BDAGraph::FindPinOnFilter( IBaseFilter* pBaseFilter, const char* pPinName)
                 else
                     pPin = NULL;      // no
 
-                delete pString;
+                delete[] pString;
 
             }
             else
diff --git a/modules/access/zip/zipstream.c b/modules/access/zip/zipstream.c
index a8c188b..b2199f9 100644
--- a/modules/access/zip/zipstream.c
+++ b/modules/access/zip/zipstream.c
@@ -575,7 +575,10 @@ static int WriteXSPF( char **pp_buffer, vlc_array_t *p_filenames,
     /* Encode the URI and append ZIP_SEP */
     char *psz_pathtozip;
     escapeToXml( &psz_pathtozip, psz_zippath );
-    if( astrcatf( &psz_pathtozip, "%s", ZIP_SEP ) < 0 ) return -1;
+    if( astrcatf( &psz_pathtozip, "%s", ZIP_SEP ) < 0 ) {
+        free_all_node( playlist );
+        return -1;
+    }
 
     int i_track = 0;
     for( int i = 0; i < vlc_array_count( p_filenames ); ++i )
diff --git a/modules/codec/quicktime.c b/modules/codec/quicktime.c
index 885c758..a1715fb 100644
--- a/modules/codec/quicktime.c
+++ b/modules/codec/quicktime.c
@@ -803,6 +803,7 @@ static int OpenVideo( decoder_t *p_dec )
 
     p_sys->framedescHandle = (ImageDescriptionHandle) NewHandleClear( id->idSize );
     memcpy( *p_sys->framedescHandle, id, id->idSize );
+    free( id );
 
     if( p_dec->fmt_in.video.i_width != 0 && p_dec->fmt_in.video.i_height != 0) 
         p_sys->plane = malloc( p_dec->fmt_in.video.i_width * p_dec->fmt_in.video.i_height * 3 );
diff --git a/modules/demux/mp4/mp4.c b/modules/demux/mp4/mp4.c
index 4d3f517..e4da4aa 100644
--- a/modules/demux/mp4/mp4.c
+++ b/modules/demux/mp4/mp4.c
@@ -4460,6 +4460,7 @@ static mp4_fragment_t * GetFragmentByTime( demux_t *p_demux, const mtime_t i_tim
         if ( i_time >= i_base_time &&
              i_time <= i_base_time + i_length )
         {
+            free( pi_tracks_duration_total );
             return p_fragment;
         }
         else
-- 
2.1.4




More information about the vlc-devel mailing list