From cab0135f57ca1c7e448e11f866b0adb8a1328d48 Mon Sep 17 00:00:00 2001 From: Xavier Del Campo Romero Date: Sun, 11 Oct 2026 01:26:41 +0200 Subject: WIP triplet --- src/prc1/tmp.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'src/prc1/tmp.c') diff --git a/src/prc1/tmp.c b/src/prc1/tmp.c index 96b2208..c990216 100644 --- a/src/prc1/tmp.c +++ b/src/prc1/tmp.c @@ -1,6 +1,7 @@ #include "tmp.h" #include "dbg.h" #include "type.h" +#include "prv.h" #include #include #include @@ -11,7 +12,7 @@ const struct stentry *tmp_create(struct fn *fn, const struct type *t) static const char fmt[] = "__tmp%zu", path[] = "(temporary)"; int r = snprintf(NULL, 0, fmt, fn->ntmps); char *s = NULL, *tname = NULL, *pathdup = NULL; - struct tmp *tmp; + struct tmp *tmp = NULL; if (!(tname = type_name(t))) goto failure; @@ -21,20 +22,15 @@ const struct stentry *tmp_create(struct fn *fn, const struct type *t) goto failure; } else if (!(s = malloc(r + 1)) - || !(pathdup = malloc(strlen(path) + 1))) + || !(tmp = malloc(sizeof *tmp))) { perror("malloc(3)"); goto failure; } + else if (!(pathdup = sdup(path + 1))) + goto failure; snprintf(s, r + 1, fmt, fn->ntmps++); - strcpy(pathdup, path); - - if (!(tmp = malloc(sizeof *tmp))) - { - perror("realloc(3)"); - goto failure; - } *tmp = (struct tmp) { @@ -68,6 +64,7 @@ const struct stentry *tmp_create(struct fn *fn, const struct type *t) failure: free(s); + free(tmp); free(tname); free(pathdup); return NULL; -- cgit v1.2.3