From fb96d6f7f2d17ac9a2f723ba5f2ddde307156b7c Mon Sep 17 00:00:00 2001 From: Pierre d'Herbemont Date: Wed, 9 Dec 2009 17:44:49 +0100 Subject: [PATCH] config: Don't leak dataDir and configDir in dirs_macos. --- src/config/dirs_macos.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/config/dirs_macos.c b/src/config/dirs_macos.c index ce630034f0..a7d5e5ff20 100644 --- a/src/config/dirs_macos.c +++ b/src/config/dirs_macos.c @@ -32,15 +32,27 @@ #include #include +static char *configdir = NULL; +static char *datadir = NULL; + +static pthread_once_t once = PTHREAD_ONCE_INIT; + +static void init_dirs( void ) +{ + configdir = config_GetUserDir(VLC_CONFIG_DIR); + datadir = config_GetUserDir(VLC_DATA_DIR); +} const char *config_GetConfDir( void ) { - return config_GetUserDir (VLC_CONFIG_DIR); + pthread_once(&once, init_dirs); + return configdir; } const char *config_GetDataDir (void) { - return config_GetUserDir (VLC_DATA_DIR); + pthread_once(&once, init_dirs); + return datadir; } static char *config_GetHomeDir (void) @@ -56,7 +68,7 @@ static char *config_GetHomeDir (void) char *config_GetUserDir (vlc_userdir_t type) { char *psz_dir; - const char *psz_parent = config_GetHomeDir (); + char *psz_parent = config_GetHomeDir (); const char *psz_path; switch (type) @@ -98,5 +110,6 @@ char *config_GetUserDir (vlc_userdir_t type) } if( asprintf( &psz_dir, psz_path, psz_parent ) == -1 ) psz_dir = NULL; + free(psz_parent); return psz_dir; } -- 2.39.2