common/dir.c: fix double free

This commit is contained in:
Johan Malm 2020-08-21 20:01:08 +01:00
parent cda27da33e
commit e62c251a74

View file

@ -77,7 +77,6 @@ static void build_theme_path(struct ctx *ctx, char *prefix, const char *path)
char *find_dir(struct ctx *ctx) char *find_dir(struct ctx *ctx)
{ {
gchar **prefixes;
char *debug = getenv("LABWC_DEBUG_DIR_CONFIG_AND_THEME"); char *debug = getenv("LABWC_DEBUG_DIR_CONFIG_AND_THEME");
for (int i = 0; ctx->dirs[i].path; i++) { for (int i = 0; ctx->dirs[i].path; i++) {
@ -94,13 +93,14 @@ char *find_dir(struct ctx *ctx)
char *prefix = getenv(d.prefix); char *prefix = getenv(d.prefix);
if (!prefix) if (!prefix)
continue; continue;
prefixes = g_strsplit(prefix, ":", -1); gchar **prefixes = g_strsplit(prefix, ":", -1);
for (gchar **p = prefixes; *p; p++) { for (gchar **p = prefixes; *p; p++) {
ctx->build_path_fn(ctx, *p, d.path); ctx->build_path_fn(ctx, *p, d.path);
if (debug) if (debug)
info("%s", ctx->buf); info("%s", ctx->buf);
if (isdir(ctx->buf)) { if (isdir(ctx->buf)) {
goto out; g_strfreev(prefixes);
return ctx->buf;
} }
} }
g_strfreev(prefixes); g_strfreev(prefixes);
@ -109,8 +109,6 @@ char *find_dir(struct ctx *ctx)
/* no directory was found */ /* no directory was found */
ctx->buf[0] = '.'; ctx->buf[0] = '.';
ctx->buf[1] = '\0'; ctx->buf[1] = '\0';
out:
g_strfreev(prefixes);
return ctx->buf; return ctx->buf;
} }