From 711b342d7c63550cf483e3b23983f981046adbb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <rem@videolan.org> Date: Sat, 11 Mar 2006 19:25:33 +0000 Subject: [PATCH] - Fix memleak when not using Mac OS - Error handling clean up --- modules/codec/subsdec.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/modules/codec/subsdec.c b/modules/codec/subsdec.c index 343c65d2b318..4298823db9cf 100644 --- a/modules/codec/subsdec.c +++ b/modules/codec/subsdec.c @@ -154,9 +154,9 @@ static int OpenDecoder( vlc_object_t *p_this ) (decoder_sys_t *)malloc(sizeof(decoder_sys_t)) ) == NULL ) { msg_Err( p_dec, "out of memory" ); - return VLC_EGENERIC; + return VLC_ENOMEM; } - + /* init of p_sys */ p_sys->i_align = 0; p_sys->iconv_handle = (vlc_iconv_t)-1; @@ -180,13 +180,19 @@ static int OpenDecoder( vlc_object_t *p_this ) var_Get( p_dec, "subsdec-encoding", &val ); if( !strcmp( val.psz_string, DEFAULT_NAME ) ) { - char *psz_charset =(char*)malloc( 100 ); + char *psz_charset; #ifdef __APPLE__ /* Most subtitles are not in UTF-8, which is the default on Mac OS X */ - sprintf( psz_charset, "ISO-8859-1" ); + psz_charset = strdup( "ISO-8859-1" ); #else vlc_current_charset( &psz_charset ); #endif + if( psz_charset == NULL ) + { + free( p_sys ); + return VLC_ENOMEM; + } + p_sys->iconv_handle = vlc_iconv_open( "UTF-8", psz_charset ); msg_Dbg( p_dec, "using default character encoding: %s", psz_charset ); free( psz_charset ); @@ -206,7 +212,7 @@ static int OpenDecoder( vlc_object_t *p_this ) } if( val.psz_string ) free( val.psz_string ); } - + var_Create( p_dec, "subsdec-align", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT ); var_Get( p_dec, "subsdec-align", &val ); p_sys->i_align = val.i_int; -- GitLab