From b6990fe68831226c0effd81deb10ab26b99454b2 Mon Sep 17 00:00:00 2001 From: Derk-Jan Hartman Date: Sat, 11 Oct 2003 21:08:40 +0000 Subject: [PATCH] * src/misc/charset.c: Fixed a segfault and removed some gcc warnings The day i understand strings and memory in C is going to be a joyful day :) * modules/demux/mkv.cpp: fixed an error if there is no ICONV support --- modules/demux/mkv.cpp | 4 ++-- src/misc/charset.c | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/demux/mkv.cpp b/modules/demux/mkv.cpp index f9afb2a2e2..6d24fd6abb 100644 --- a/modules/demux/mkv.cpp +++ b/modules/demux/mkv.cpp @@ -2,7 +2,7 @@ * mkv.cpp : matroska demuxer ***************************************************************************** * Copyright (C) 2001 VideoLAN - * $Id: mkv.cpp,v 1.27 2003/09/12 16:26:40 fenrir Exp $ + * $Id: mkv.cpp,v 1.28 2003/10/11 21:08:40 hartman Exp $ * * Authors: Laurent Aimar * @@ -1045,8 +1045,8 @@ static int Open( vlc_object_t * p_this ) val.psz_string = "UTF-8"; #if defined(HAVE_ICONV) var_Create( p_input, "subsdec-encoding", VLC_VAR_STRING | VLC_VAR_DOINHERIT ); -#endif var_Set( p_input, "subsdec-encoding", val ); +#endif } if( !strcmp( tk.psz_codec, "V_MS/VFW/FOURCC" ) ) { diff --git a/src/misc/charset.c b/src/misc/charset.c index 2c3f2a5333..cb08c60992 100644 --- a/src/misc/charset.c +++ b/src/misc/charset.c @@ -3,7 +3,7 @@ * encoding. ***************************************************************************** * Copyright (C) 2003 VideoLAN - * $Id: charset.c,v 1.3 2003/09/29 17:36:35 gbazin Exp $ + * $Id: charset.c,v 1.4 2003/10/11 21:08:40 hartman Exp $ * * Authors: Derk-Jan Hartman * @@ -214,7 +214,7 @@ static char *vlc_encoding_from_locale( char *psz_locale ) if( psz_modifier == NULL ) return psz_dot; - if( psz_modifier - psz_dot < sizeof( buf )) + if( 0 < ( psz_modifier - psz_dot ) < sizeof( buf )) { memcpy( buf, psz_dot, psz_modifier - psz_dot ); buf[ psz_modifier - psz_dot ] = '\0'; @@ -222,7 +222,7 @@ static char *vlc_encoding_from_locale( char *psz_locale ) } } /* try language mapping */ - return vlc_encoding_from_language( psz_locale ); + return (char *)vlc_encoding_from_language( psz_locale ); } vlc_bool_t vlc_current_charset( char **psz_charset ) @@ -260,7 +260,7 @@ vlc_bool_t vlc_current_charset( char **psz_charset ) /* On some old systems, one used to set locale = "iso8859_1". On others, * you set it to "language_COUNTRY.charset". Darwin only has LANG :( */ - psz_codeset = vlc_encoding_from_locale( psz_locale ); + psz_codeset = vlc_encoding_from_locale( (char *)psz_locale ); # endif /* HAVE_LANGINFO_CODESET */ #elif defined WIN32 @@ -322,7 +322,7 @@ vlc_bool_t vlc_current_charset( char **psz_charset ) } if( psz_charset ) - *psz_charset = (char *)psz_codeset; + *psz_charset = strdup((char *)psz_codeset); if (strcasecmp(psz_codeset, "UTF8")==0 || strcasecmp(psz_codeset, "UTF-8")==0) return VLC_TRUE;