]> git.sesse.net Git - vlc/blobdiff - modules/stream_out/standard.c
vcdx: Fix memleaks.
[vlc] / modules / stream_out / standard.c
index ca3011ffec88b480c77d2a852ef627557fe403c5..a7c5d24904372fd5d21905f1c3e227ed80dc2712 100644 (file)
 # include "config.h"
 #endif
 
-#include <vlc/vlc.h>
+#ifdef WIN32
+# define _WIN32_WINNT 0x0501
+#endif
+
+#include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_sout.h>
 
@@ -213,7 +217,11 @@ static int Open( vlc_object_t *p_this )
         free( val.psz_string );
 
     p_sys = p_stream->p_sys = malloc( sizeof( sout_stream_sys_t) );
-    if( !p_sys ) return VLC_ENOMEM;
+    if( !p_sys )
+    {
+        free( psz_url );
+        return VLC_ENOMEM;
+    }
     p_stream->p_sys->p_session = NULL;
 
     msg_Dbg( p_this, "creating `%s/%s://%s'", psz_access, psz_mux, psz_url );
@@ -274,6 +282,8 @@ static int Open( vlc_object_t *p_this )
         else
         {
             msg_Err( p_stream, "no access _and_ no muxer (fatal error)" );
+            free( psz_url );
+            free( p_sys );
             return VLC_EGENERIC;
         }
     }
@@ -296,6 +306,7 @@ static int Open( vlc_object_t *p_this )
         else
         {
             msg_Err( p_stream, "no mux specified or found by extension" );
+            free( p_sys );
             return VLC_EGENERIC;
         }
     }
@@ -364,6 +375,8 @@ static int Open( vlc_object_t *p_this )
                  psz_access, psz_mux, psz_url );
         free( psz_access );
         free( psz_mux );
+        free( psz_url );
+        free( p_sys );
         return VLC_EGENERIC;
     }
     msg_Dbg( p_stream, "access opened" );
@@ -378,6 +391,8 @@ static int Open( vlc_object_t *p_this )
         sout_AccessOutDelete( p_access );
         free( psz_access );
         free( psz_mux );
+        free( psz_url );
+        free( p_sys );
         return VLC_EGENERIC;
     }
     msg_Dbg( p_stream, "mux opened" );