Commit 6f2d1380 authored by Rémi Duraffort's avatar Rémi Duraffort

fontconfig: factorize and fix memleaks.

parent 754491fc
...@@ -297,7 +297,7 @@ static int Create( vlc_object_t *p_this ) ...@@ -297,7 +297,7 @@ static int Create( vlc_object_t *p_this )
int i_error,fontindex; int i_error,fontindex;
#ifdef HAVE_FONTCONFIG #ifdef HAVE_FONTCONFIG
FcPattern *fontpattern, *fontmatch; FcPattern *fontpattern = NULL, *fontmatch = NULL;
FcResult fontresult = FcResultNoMatch; FcResult fontresult = FcResultNoMatch;
#endif #endif
...@@ -359,28 +359,18 @@ static int Create( vlc_object_t *p_this ) ...@@ -359,28 +359,18 @@ static int Create( vlc_object_t *p_this )
free( psz_fontsize ); free( psz_fontsize );
if( FcConfigSubstitute( NULL, fontpattern, FcMatchPattern ) == FcFalse ) if( FcConfigSubstitute( NULL, fontpattern, FcMatchPattern ) == FcFalse )
{
FcPatternDestroy( fontpattern );
goto error; goto error;
}
FcDefaultSubstitute( fontpattern ); FcDefaultSubstitute( fontpattern );
fontmatch = FcFontMatch( NULL, fontpattern, &fontresult ); fontmatch = FcFontMatch( NULL, fontpattern, &fontresult );
if( !fontmatch || fontresult == FcResultNoMatch ) if( !fontmatch || fontresult == FcResultNoMatch )
{
FcPatternDestroy( fontpattern );
goto error; goto error;
}
FcPatternGetString( fontmatch, FC_FILE, 0, (FcChar8 **)&psz_fontfile); FcPatternGetString( fontmatch, FC_FILE, 0, (FcChar8 **)&psz_fontfile);
FcPatternGetInteger( fontmatch, FC_INDEX, 0, &fontindex ); FcPatternGetInteger( fontmatch, FC_INDEX, 0, &fontindex );
if( !psz_fontfile ) if( !psz_fontfile )
{
FcPatternDestroy( fontpattern );
FcPatternDestroy( fontmatch );
goto error; goto error;
} msg_Dbg( p_filter, "Using %s as font from file %s", psz_fontfamily, psz_fontfile );
msg_Dbg( p_filter, "Using %s as font from file %s", psz_fontfamily, psz_fontfile);
#else #else
psz_fontfile = psz_fontfamily; psz_fontfile = psz_fontfamily;
#endif #endif
...@@ -441,7 +431,11 @@ static int Create( vlc_object_t *p_this ) ...@@ -441,7 +431,11 @@ static int Create( vlc_object_t *p_this )
return VLC_SUCCESS; return VLC_SUCCESS;
error: error:
#ifdef HAVE_FONTCONFIG
if( fontmatch ) FcPatternDestroy( fontmatch );
if( fontpattern ) FcPatternDestroy( fontpattern );
#endif
if( p_sys->p_face ) FT_Done_Face( p_sys->p_face ); if( p_sys->p_face ) FT_Done_Face( p_sys->p_face );
if( p_sys->p_library ) FT_Done_FreeType( p_sys->p_library ); if( p_sys->p_library ) FT_Done_FreeType( p_sys->p_library );
free( psz_fontfile ); free( psz_fontfile );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment