audiod: Fix a memory leak.
authorAndre Noll <maan@systemlinux.org>
Tue, 4 Sep 2007 20:16:06 +0000 (22:16 +0200)
committerAndre Noll <maan@systemlinux.org>
Tue, 4 Sep 2007 20:16:06 +0000 (22:16 +0200)
If the config file doesn't exist, configfile_exists() returnes NULL.
The old code leaked a pointer to the config file in this case.

This function is only called once at startup, so the leak is benign.
Morover, kill the static variable and the check if (!config_file) which
is always true.

audiod.c

index 397ef9a..dd72323 100644 (file)
--- a/audiod.c
+++ b/audiod.c
@@ -168,14 +168,14 @@ void para_log(int ll, const char* fmt,...)
 
 static char *configfile_exists(void)
 {
-       static char *config_file;
-
-       if (!config_file) {
-               char *home = para_homedir();
-               config_file = make_message("%s/.paraslash/audiod.conf", home);
-               free(home);
-       }
-       return file_exists(config_file)? config_file : NULL;
+       char *home = para_homedir();
+       char *config_file = make_message("%s/.paraslash/audiod.conf",
+               home);
+       free(home);
+       if (file_exists(config_file))
+               return config_file;
+       free(config_file);
+       return NULL;
 }
 
 static void setup_signal_handling(void)