]> git.sesse.net Git - vlc/blobdiff - modules/demux/subtitle_asa.c
Memory leak (fixes #2442)
[vlc] / modules / demux / subtitle_asa.c
index cce80daf55749a52503ec0693571189960e64d41..7a654f302a40d0d776bb6e26a1d90d730c73b768 100644 (file)
@@ -30,7 +30,8 @@
  * Preamble
  *****************************************************************************/
 #include "config.h"
-#include <vlc/vlc.h>
+#include <vlc_common.h>
+#include <vlc_plugin.h>
 #include <vlc_input.h>
 
 
@@ -59,24 +60,24 @@ static void Close( vlc_object_t *p_this );
 #define SUB_TYPE_LONGTEXT \
     N_("Force the subtiles format. Use \"auto\", the set of supported values varies.")
 
-vlc_module_begin();
-    set_shortname( _("Subtitles (asa demuxer)"));
-    set_description( _("Text subtitles parser") );
-    set_capability( "demux", 50 );
-    set_category( CAT_INPUT );
-    set_subcategory( SUBCAT_INPUT_DEMUX );
+vlc_module_begin ()
+    set_shortname( N_("Subtitles (asa demuxer)"))
+    set_description( N_("Text subtitles parser") )
+    set_capability( "demux", 50 )
+    set_category( CAT_INPUT )
+    set_subcategory( SUBCAT_INPUT_DEMUX )
     add_float( "sub-fps", 0.0, NULL,
                N_("Frames per second"),
-               SUB_FPS_LONGTEXT, true );
+               SUB_FPS_LONGTEXT, true )
     add_integer( "sub-delay", 0, NULL,
                N_("Subtitles delay"),
-               SUB_DELAY_LONGTEXT, true );
+               SUB_DELAY_LONGTEXT, true )
     add_string( "sub-type", "auto", NULL, N_("Subtitles format"),
-                SUB_TYPE_LONGTEXT, true );
-    set_callbacks( Open, Close );
+                SUB_TYPE_LONGTEXT, true )
+    set_callbacks( Open, Close )
 
-    add_shortcut( "asademux" );
-vlc_module_end();
+    add_shortcut( "asademux" )
+vlc_module_end ()
 
 /*****************************************************************************
  * Prototypes:
@@ -132,13 +133,14 @@ static int Open ( vlc_object_t *p_this )
 
     if( strcmp( p_demux->psz_demux, "asademux" ) )
     {
-        msg_Dbg( p_demux, "asademux discarded" );
         return VLC_EGENERIC;
     }
 
     p_demux->pf_demux = Demux;
     p_demux->pf_control = Control;
     p_demux->p_sys = p_sys = malloc( sizeof( demux_sys_t ) );
+    if( !p_sys  )
+        return VLC_ENOMEM;
     p_sys->psz_header         = NULL;
     p_sys->i_subtitle         = 0;
     p_sys->i_subtitles        = 0;
@@ -209,7 +211,7 @@ static int Open ( vlc_object_t *p_this )
     }
     if( !p_detect->fmt )
     {
-        msg_Err( p_demux, "detected %s subtitle format, no asa support" );
+        msg_Err( p_demux, "detected %s subtitle format, no asa support", p_detect->name );
         free( p_sys );
         return VLC_EGENERIC;
     }
@@ -219,7 +221,6 @@ static int Open ( vlc_object_t *p_this )
     p_data = malloc( i_ssize );
     if( !p_data )
     {
-        msg_Err( p_demux, "out of memory");
         free( p_sys );
         return VLC_ENOMEM;
     }
@@ -274,13 +275,14 @@ static int ProcessLine( demux_t *p_demux, void *p_arg,
     subtitle_t *p_subtitle;
     char *psz_text;
 
+    VLC_UNUSED(p_arg);
+
     if( p_sys->i_subtitles >= p_sys->i_subs_alloc )
     {
         p_sys->i_subs_alloc += 500;
         if( !( p_sys->subtitle = realloc( p_sys->subtitle, sizeof(subtitle_t)
                                           * p_sys->i_subs_alloc ) ) )
         {
-            msg_Err( p_demux, "out of memory");
             return VLC_ENOMEM;
         }
     }