spa: alsa: fix leaks in get_data_path()

Coverity rightfully complains that assigning to `path`
will lose its previous value leading to resource leaks.
This commit is contained in:
Barnabás Pőcze 2023-11-10 03:26:36 +01:00
parent 7465175ad0
commit e0bfdb9f46

View file

@ -251,7 +251,6 @@ char *get_data_path(const char *data_dir, const char *data_type, const char *fna
}; };
const char *e; const char *e;
spa_autofree char *base = NULL; spa_autofree char *base = NULL;
spa_autofree char *path = NULL;
char *result; char *result;
if (data_dir) if (data_dir)
@ -271,18 +270,18 @@ char *get_data_path(const char *data_dir, const char *data_type, const char *fna
base = get_xdg_home("XDG_CONFIG_HOME", ".config"); base = get_xdg_home("XDG_CONFIG_HOME", ".config");
if (base) { if (base) {
SPA_FOR_EACH_ELEMENT_VAR(subpaths, subpath) { SPA_FOR_EACH_ELEMENT_VAR(subpaths, subpath) {
path = spa_aprintf("%s/%s/%s", base, *subpath, data_type); spa_autofree char *path = spa_aprintf("%s/%s/%s", base, *subpath, data_type);
if ((result = try_path(fname, path)) != NULL) if ((result = try_path(fname, path)) != NULL)
return result; return result;
} }
} }
SPA_FOR_EACH_ELEMENT_VAR(subpaths, subpath) { SPA_FOR_EACH_ELEMENT_VAR(subpaths, subpath) {
path = spa_aprintf("/etc/%s/%s", *subpath, data_type); spa_autofree char *path = spa_aprintf("/etc/%s/%s", *subpath, data_type);
if ((result = try_path(fname, path)) != NULL) if ((result = try_path(fname, path)) != NULL)
return result; return result;
} }
path = spa_aprintf("%s/%s", PA_ALSA_DATA_DIR, data_type); spa_autofree char *path = spa_aprintf("%s/%s", PA_ALSA_DATA_DIR, data_type);
return pa_maybe_prefix_path(fname, path); return pa_maybe_prefix_path(fname, path);
} }