tal/path: fix unset vars in error paths.
[ccan] / ccan / tal / path / path.c
index e6e94dbe080dca24fcdb5ec02a4701381029647b..a0dbe291440e248fba0faddf6a70bf0062c0c009 100644 (file)
@@ -244,8 +244,10 @@ char *path_rel(const tal_t *ctx, const char *from, const char *to)
 
        /* This frees to if we're supposed to take it. */
        cto = path_canon(tmpctx, to);
 
        /* This frees to if we're supposed to take it. */
        cto = path_canon(tmpctx, to);
-       if (!cto)
+       if (!cto) {
+               ret = NULL;
                goto out;
                goto out;
+       }
 
        /* How much is in common? */
        for (common = i = 0; cfrom[i] && cto[i]; i++) {
 
        /* How much is in common? */
        for (common = i = 0; cfrom[i] && cto[i]; i++) {
@@ -323,7 +325,9 @@ fail_take_to:
                        goto fail;
        }
 
                        goto fail;
        }
 
-       ret[len] = '\0';
+       if (ret)
+               ret[len] = '\0';
+
 out:
        if (taken(linkname))
                tal_free(linkname);
 out:
        if (taken(linkname))
                tal_free(linkname);