Commit 798c883b authored by Gildas Bazin's avatar Gildas Bazin

* modules/gui/skins2/*: fixed a whole bunch of memory leaks.

parent 799d80ce
...@@ -187,13 +187,13 @@ VarBool *Interpreter::getVarBool( const string &rName, Theme *pTheme ) ...@@ -187,13 +187,13 @@ VarBool *Interpreter::getVarBool( const string &rName, Theme *pTheme )
VarManager *pVarManager = VarManager::instance( getIntf() ); VarManager *pVarManager = VarManager::instance( getIntf() );
// Convert the expression into Reverse Polish Notation // Convert the expression into Reverse Polish Notation
ExprEvaluator *pEvaluator = new ExprEvaluator( getIntf() ); ExprEvaluator evaluator( getIntf() );
pEvaluator->parse( rName ); evaluator.parse( rName );
list<VarBool*> varStack; list<VarBool*> varStack;
// Get the first token from the RPN stack // Get the first token from the RPN stack
string token = pEvaluator->getToken(); string token = evaluator.getToken();
while( !token.empty() ) while( !token.empty() )
{ {
if( token == "and" ) if( token == "and" )
...@@ -295,7 +295,7 @@ VarBool *Interpreter::getVarBool( const string &rName, Theme *pTheme ) ...@@ -295,7 +295,7 @@ VarBool *Interpreter::getVarBool( const string &rName, Theme *pTheme )
varStack.push_back( pVar ); varStack.push_back( pVar );
} }
// Get the first token from the RPN stack // Get the first token from the RPN stack
token = pEvaluator->getToken(); token = evaluator.getToken();
} }
// The stack should contain a single variable // The stack should contain a single variable
......
...@@ -149,11 +149,13 @@ bool XMLParser::parse() ...@@ -149,11 +149,13 @@ bool XMLParser::parse()
} }
handleBeginElement( eltName, attributes ); handleBeginElement( eltName, attributes );
free( eltName );
map<const char*, const char*, ltstr> ::iterator it = map<const char*, const char*, ltstr> ::iterator it =
attributes.begin(); attributes.begin();
while( it != attributes.end() ) while( it != attributes.end() )
{ {
free( (char *)it->first );
free( (char *)it->second ); free( (char *)it->second );
it++; it++;
} }
......
...@@ -45,8 +45,7 @@ void Theme::loadConfig() ...@@ -45,8 +45,7 @@ void Theme::loadConfig()
// Get config from vlcrc file // Get config from vlcrc file
char *save = config_GetPsz( getIntf(), "skins2-config" ); char *save = config_GetPsz( getIntf(), "skins2-config" );
if( save == NULL ) if( !save ) return;
return;
// Initialization // Initialization
map<string, TopWindowPtr>::const_iterator it; map<string, TopWindowPtr>::const_iterator it;
...@@ -75,6 +74,7 @@ void Theme::loadConfig() ...@@ -75,6 +74,7 @@ void Theme::loadConfig()
// Next window // Next window
i++; i++;
} }
free( save );
} }
......
...@@ -97,6 +97,7 @@ bool ThemeLoader::load( const string &fileName ) ...@@ -97,6 +97,7 @@ bool ThemeLoader::load( const string &fileName )
// Show the windows // Show the windows
pNewTheme->getWindowManager().showAll(); pNewTheme->getWindowManager().showAll();
} }
if( skin_last ) free( skin_last );
return true; return true;
} }
...@@ -244,6 +245,7 @@ bool ThemeLoader::findThemeFile( const string &rootDir, string &themeFilePath ) ...@@ -244,6 +245,7 @@ bool ThemeLoader::findThemeFile( const string &rootDir, string &themeFilePath )
// Can we find the theme file in this subdirectory? // Can we find the theme file in this subdirectory?
if( findThemeFile( newURI, themeFilePath ) ) if( findThemeFile( newURI, themeFilePath ) )
{ {
closedir( pCurrDir );
return true; return true;
} }
} }
...@@ -254,6 +256,7 @@ bool ThemeLoader::findThemeFile( const string &rootDir, string &themeFilePath ) ...@@ -254,6 +256,7 @@ bool ThemeLoader::findThemeFile( const string &rootDir, string &themeFilePath )
string( pDirContent->d_name ) ) string( pDirContent->d_name ) )
{ {
themeFilePath = newURI; themeFilePath = newURI;
closedir( pCurrDir );
return true; return true;
} }
} }
...@@ -262,6 +265,7 @@ bool ThemeLoader::findThemeFile( const string &rootDir, string &themeFilePath ) ...@@ -262,6 +265,7 @@ bool ThemeLoader::findThemeFile( const string &rootDir, string &themeFilePath )
pDirContent = readdir( pCurrDir ); pDirContent = readdir( pCurrDir );
} }
closedir( pCurrDir );
return false; return false;
} }
......
...@@ -135,6 +135,8 @@ void ThemeRepository::parseDirectory( const string &rDir ) ...@@ -135,6 +135,8 @@ void ThemeRepository::parseDirectory( const string &rDir )
pDirContent = readdir( pDir ); pDirContent = readdir( pDir );
} }
closedir( pDir );
} }
......
...@@ -34,7 +34,7 @@ Playlist::Playlist( intf_thread_t *pIntf ): VarList( pIntf ) ...@@ -34,7 +34,7 @@ Playlist::Playlist( intf_thread_t *pIntf ): VarList( pIntf )
m_pPlaylist = pIntf->p_sys->p_playlist; m_pPlaylist = pIntf->p_sys->p_playlist;
// Try to guess the current charset // Try to guess the current charset
char *pCharset = (char*)malloc( 100 ); char *pCharset;
vlc_current_charset( &pCharset ); vlc_current_charset( &pCharset );
iconvHandle = vlc_iconv_open( "UTF-8", pCharset ); iconvHandle = vlc_iconv_open( "UTF-8", pCharset );
msg_Dbg( pIntf, "Using character encoding: %s", pCharset ); msg_Dbg( pIntf, "Using character encoding: %s", pCharset );
......
...@@ -211,8 +211,10 @@ X11Display::X11Display( intf_thread_t *pIntf ): SkinObject( pIntf ), ...@@ -211,8 +211,10 @@ X11Display::X11Display( intf_thread_t *pIntf ): SkinObject( pIntf ),
// Set an empty mask for the window // Set an empty mask for the window
Region mask = XCreateRegion(); Region mask = XCreateRegion();
XShapeCombineRegion( m_pDisplay, m_mainWindow, ShapeBounding, 0, 0, mask, XShapeCombineRegion( m_pDisplay, m_mainWindow, ShapeBounding, 0, 0,
ShapeSet ); mask, ShapeSet );
XDestroyRegion( mask );
// Map the window // Map the window
XMapWindow( m_pDisplay, m_mainWindow); XMapWindow( m_pDisplay, m_mainWindow);
......
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