Fix compilation
[vlc.git] / modules / codec / subtitles / subsdec.c
index de9dde5..82d1e66 100644 (file)
@@ -27,6 +27,9 @@
 /*****************************************************************************
  * Preamble
  *****************************************************************************/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
 
 #include "subsdec.h"
 
@@ -117,18 +120,14 @@ vlc_module_begin();
 
     add_integer( "subsdec-align", 0, NULL, ALIGN_TEXT, ALIGN_LONGTEXT,
                  VLC_FALSE );
-        change_safe();
         change_integer_list( pi_justification, ppsz_justification_text, 0 );
     add_string( "subsdec-encoding", DEFAULT_NAME, NULL,
                 ENCODING_TEXT, ENCODING_LONGTEXT, VLC_FALSE );
-        change_safe();
         change_string_list( ppsz_encodings, 0, 0 );
     add_bool( "subsdec-autodetect-utf8", VLC_TRUE, NULL,
               AUTODETECT_UTF8_TEXT, AUTODETECT_UTF8_LONGTEXT, VLC_FALSE );
-        change_safe();
     add_bool( "subsdec-formatted", VLC_TRUE, NULL, FORMAT_TEXT, FORMAT_LONGTEXT,
                  VLC_FALSE );
-        change_safe();
 vlc_module_end();
 
 /*****************************************************************************
@@ -284,12 +283,9 @@ static void CloseDecoder( vlc_object_t *p_this )
             if( !p_sys->pp_ssa_styles[i] )
                 continue;
 
-            if( p_sys->pp_ssa_styles[i]->psz_stylename )
-                free( p_sys->pp_ssa_styles[i]->psz_stylename );
-            if( p_sys->pp_ssa_styles[i]->font_style.psz_fontname )
-                free( p_sys->pp_ssa_styles[i]->font_style.psz_fontname );
-            if( p_sys->pp_ssa_styles[i] )
-                free( p_sys->pp_ssa_styles[i] );
+            free( p_sys->pp_ssa_styles[i]->psz_stylename );
+            free( p_sys->pp_ssa_styles[i]->font_style.psz_fontname );
+            free( p_sys->pp_ssa_styles[i] );
         }
         TAB_CLEAN( p_sys->i_ssa_styles, p_sys->pp_ssa_styles );
     }
@@ -303,8 +299,7 @@ static void CloseDecoder( vlc_object_t *p_this )
 
             if( p_sys->pp_images[i]->p_pic )
                 p_sys->pp_images[i]->p_pic->pf_release( p_sys->pp_images[i]->p_pic );
-            if( p_sys->pp_images[i]->psz_filename )
-                free( p_sys->pp_images[i]->psz_filename );
+            free( p_sys->pp_images[i]->psz_filename );
 
             free( p_sys->pp_images[i] );
         }
@@ -402,7 +397,7 @@ static subpicture_t *ParseText( decoder_t *p_dec, block_t *p_block )
     if( !p_spu )
     {
         msg_Warn( p_dec, "can't get spu buffer" );
-        if( psz_subtitle ) free( psz_subtitle );
+        free( psz_subtitle );
         return NULL;
     }
 
@@ -418,7 +413,7 @@ static subpicture_t *ParseText( decoder_t *p_dec, block_t *p_block )
     if( !p_spu->p_region )
     {
         msg_Err( p_dec, "cannot allocate SPU region" );
-        if( psz_subtitle ) free( psz_subtitle );
+        free( psz_subtitle );
         p_dec->pf_spu_buffer_del( p_dec, p_spu );
         return NULL;
     }
@@ -457,7 +452,7 @@ static subpicture_t *ParseText( decoder_t *p_dec, block_t *p_block )
         p_spu->i_original_picture_width = p_sys->i_original_width;
         p_spu->i_original_picture_height = p_sys->i_original_height;
     }
-    if( psz_subtitle ) free( psz_subtitle );
+    free( psz_subtitle );
 
     return p_spu;
 }
@@ -577,11 +572,12 @@ static char *StripTags( char *psz_subtitle )
  */
 static char *CreateHtmlSubtitle( char *psz_subtitle )
 {
-    char    psz_tagStack[ 100 ];
+    char   *psz_tag = malloc( ( strlen( psz_subtitle ) / 3 ) + 1 );
+    if( !psz_tag ) return NULL;
     size_t  i_buf_size     = strlen( psz_subtitle ) + 100;
     char   *psz_html_start = malloc( i_buf_size );
 
-    psz_tagStack[ 0 ] = '\0';
+    psz_tag[ 0 ] = '\0';
 
     if( psz_html_start != NULL )
     {
@@ -609,21 +605,21 @@ static char *CreateHtmlSubtitle( char *psz_subtitle )
                 else if( !strncasecmp( psz_subtitle, "<b>", 3 ) )
                 {
                     strcpy( psz_html, "<b>" );
-                    strcat( psz_tagStack, "b" );
+                    strcat( psz_tag, "b" );
                     psz_html += 3;
                     psz_subtitle += 3;
                 }
                 else if( !strncasecmp( psz_subtitle, "<i>", 3 ) )
                 {
                     strcpy( psz_html, "<i>" );
-                    strcat( psz_tagStack, "i" );
+                    strcat( psz_tag, "i" );
                     psz_html += 3;
                     psz_subtitle += 3;
                 }
                 else if( !strncasecmp( psz_subtitle, "<u>", 3 ) )
                 {
                     strcpy( psz_html, "<u>" );
-                    strcat( psz_tagStack, "u" );
+                    strcat( psz_tag, "u" );
                     psz_html += 3;
                     psz_subtitle += 3;
                 }
@@ -635,7 +631,7 @@ static char *CreateHtmlSubtitle( char *psz_subtitle )
                             "alpha=\"", NULL };
 
                     strcpy( psz_html, "<font " );
-                    strcat( psz_tagStack, "f" );
+                    strcat( psz_tag, "f" );
                     psz_html += 6;
                     psz_subtitle += 6;
 
@@ -673,12 +669,12 @@ static char *CreateHtmlSubtitle( char *psz_subtitle )
                 else if( !strncmp( psz_subtitle, "</", 2 ))
                 {
                     vlc_bool_t  b_match     = VLC_FALSE;
-                    int         i_len       = strlen( psz_tagStack ) - 1;
+                    int         i_len       = strlen( psz_tag ) - 1;
                     char       *psz_lastTag = NULL;
 
                     if( i_len >= 0 )
                     {
-                        psz_lastTag = psz_tagStack + i_len;
+                        psz_lastTag = psz_tag + i_len;
                         i_len = 0;
 
                         switch( *psz_lastTag )
@@ -777,7 +773,7 @@ static char *CreateHtmlSubtitle( char *psz_subtitle )
         strcpy( psz_html, "</text>" );
         psz_html += 7;
 
-        if( psz_tagStack[ 0 ] != '\0' )
+        if( psz_tag[ 0 ] != '\0' )
         {
             /* Not well formed -- kill everything */
             free( psz_html_start );
@@ -789,5 +785,6 @@ static char *CreateHtmlSubtitle( char *psz_subtitle )
             psz_html_start = realloc( psz_html_start,  psz_html - psz_html_start + 1 );
         }
     }
+    free( psz_tag );
     return psz_html_start;
 }