consumer_avformat.c:
[melted] / src / framework / mlt_repository.c
index b1a1992..1d93d55 100644 (file)
@@ -95,6 +95,8 @@ mlt_repository mlt_repository_init( const char *directory )
                        fprintf( stderr, "%s, %s: failed to dlopen %s\n", __FILE__, __FUNCTION__, object_name );
                }
        }
+
+       mlt_properties_close( dir );
        
        return this;
 }
@@ -266,7 +268,7 @@ mlt_properties mlt_repository_metadata( mlt_repository self, mlt_service_type ty
        return metadata;
 }
 
-static const char *getenv_locale()
+static char *getenv_locale()
 {
        char *s = getenv( "LANGUAGE" );
        if ( s && s[0] )
@@ -292,10 +294,11 @@ mlt_properties mlt_repository_languages( mlt_repository self )
        if ( languages )
                return languages;
                
-       char *locale = strdup( getenv_locale() );
        languages = mlt_properties_new();
+       char *locale = getenv_locale();
        if ( locale )
        {
+               locale = strdup( locale );
                mlt_tokeniser tokeniser = mlt_tokeniser_init();
                int count = mlt_tokeniser_parse_new( tokeniser, locale, ":" );
                if ( count )
@@ -317,13 +320,13 @@ mlt_properties mlt_repository_languages( mlt_repository self )
                {
                        mlt_properties_set( languages, "0", "en" );
                }
+               free( locale );
                mlt_tokeniser_close( tokeniser );
        }
        else
        {
                mlt_properties_set( languages, "0", "en" );
        }
-       free( locale );
        mlt_properties_set_data( &self->parent, "languages", languages, 0, ( mlt_destructor )mlt_properties_close, NULL );
        return languages;
 }