From 94b3251f766a6d215342e4549c0436b7d2ac185c Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Duraffort?= Date: Mon, 11 Jul 2011 15:33:23 +0200 Subject: [PATCH] lua_equalizer: fix memory leaks --- modules/lua/libs/equalizer.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/modules/lua/libs/equalizer.c b/modules/lua/libs/equalizer.c index decc64bb92..f01cd2e1f1 100644 --- a/modules/lua/libs/equalizer.c +++ b/modules/lua/libs/equalizer.c @@ -70,9 +70,11 @@ static int vlclua_preamp_get( lua_State *L ) char *psz_af = var_GetNonEmptyString( p_aout, "audio-filter" ); if( strstr ( psz_af, "equalizer" ) == NULL ) { + free( psz_af ); vlc_object_release( p_aout ); return 0; } + free( psz_af ); lua_pushnumber( L, var_GetFloat( p_aout, "equalizer-preamp") ); vlc_object_release( p_aout ); @@ -97,9 +99,11 @@ static int vlclua_preamp_set( lua_State *L ) char *psz_af = var_GetNonEmptyString( p_aout, "audio-filter" ); if( strstr ( psz_af, "equalizer" ) == NULL ) { + free( psz_af ); vlc_object_release( p_aout ); return 0; } + free( psz_af ); var_SetFloat( p_aout, "equalizer-preamp", luaL_checknumber( L, 1 ) ); vlc_object_release( p_aout ); @@ -138,26 +142,29 @@ static int vlclua_equalizer_get( lua_State *L ) char *psz_af = var_GetNonEmptyString( p_aout, "audio-filter" ); if( strstr ( psz_af, "equalizer" ) == NULL ) { + free( psz_af ); vlc_object_release( p_aout ); return 0; } + free( psz_af ); int bandid = luaL_checknumber( L, 1 ); - char *bands = var_GetNonEmptyString( p_aout, "equalizer-bands" ); + char *psz_bands_origin, *psz_bands; + psz_bands_origin = psz_bands = var_GetNonEmptyString( p_aout, "equalizer-bands" ); locale_t loc = newlocale (LC_NUMERIC_MASK, "C", NULL); locale_t oldloc = uselocale (loc); while( bandid >= 0 ) { - level = strtof( bands, &bands); + level = strtof( psz_bands, &psz_bands); bandid--; } + free( psz_bands_origin ); if (loc != (locale_t)0) { uselocale (oldloc); freelocale (loc); } - vlc_object_release( p_aout ); if( bandid == -1 ) { @@ -187,9 +194,11 @@ static int vlclua_equalizer_set( lua_State *L ) char *psz_af = var_GetNonEmptyString( p_aout, "audio-filter" ); if( strstr ( psz_af, "equalizer" ) == NULL ) { + free( psz_af ); vlc_object_release( p_aout ); return 0; } + free( psz_af ); int bandid = luaL_checknumber( L, 1 ); float level = luaL_checknumber( L, 2 ); -- 2.39.2