]> git.mdlowis.com Git - proto/labwc.git/commitdiff
common/dir.c: fix double free
authorJohan Malm <jgm323@gmail.com>
Fri, 21 Aug 2020 19:01:08 +0000 (20:01 +0100)
committerJohan Malm <jgm323@gmail.com>
Fri, 21 Aug 2020 19:01:08 +0000 (20:01 +0100)
src/common/dir.c

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