From 2389b572327a1d14093edc0cf445a961e9595898 Mon Sep 17 00:00:00 2001 From: Jeff Morriss Date: Tue, 26 Feb 2008 19:13:43 +0000 Subject: get_datafile_path() and get_persconffile_path() return malloc'd memory, free it when we're done with the file name. svn path=/trunk/; revision=24478 --- color_filters.c | 2 ++ filters.c | 49 ++++++++++++++++++++++++++----------------------- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/color_filters.c b/color_filters.c index 652dcb19a6..4d45c08ea5 100644 --- a/color_filters.c +++ b/color_filters.c @@ -759,8 +759,10 @@ color_filters_write(GSList *cfl) simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "Could not open\n%s\nfor writing: %s.", path, strerror(errno)); + g_free(path); return FALSE; } + g_free(path); write_filters_file(cfl, f, FALSE); fclose(f); return TRUE; diff --git a/filters.c b/filters.c index 71d177135b..c13947ffe6 100644 --- a/filters.c +++ b/filters.c @@ -170,33 +170,36 @@ read_filter_list(filter_list_type_t list_type, char **pref_path_return, g_free(ff_path); ff_path = get_persconffile_path(FILTER_FILE_NAME, FALSE, FALSE); if ((ff = eth_fopen(ff_path, "r")) == NULL) { - /* - * Did that fail because the file didn't exist? - */ - if (errno != ENOENT) { /* - * No. Just give up. + * Did that fail because the file didn't exist? */ - *pref_path_return = ff_path; - *errno_return = errno; - return; - } - - /* - * Try to open the global "cfilters/dfilters" file */ - ff_path = get_datafile_path(ff_name); - if ((ff = eth_fopen(ff_path, "r")) == NULL) { + if (errno != ENOENT) { + /* + * No. Just give up. + */ + *pref_path_return = ff_path; + *errno_return = errno; + return; + } /* - * Well, that didn't work, either. Just give up. - * Return an error if the file existed but we couldn't open it. - */ - if (errno != ENOENT) { - *pref_path_return = ff_path; - *errno_return = errno; - } - return; - } + * Try to open the global "cfilters/dfilters" file */ + g_free(ff_path); + ff_path = get_datafile_path(ff_name); + if ((ff = eth_fopen(ff_path, "r")) == NULL) { + + /* + * Well, that didn't work, either. Just give up. + * Return an error if the file existed but we couldn't open it. + */ + if (errno != ENOENT) { + *pref_path_return = ff_path; + *errno_return = errno; + } else { + g_free(ff_path); + } + return; + } } } -- cgit v1.2.3