diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-03-22 17:29:53 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-03-22 22:20:29 -0400 |
commit | edc047fa3167fd89efde193a137e94eac35f93ac (patch) | |
tree | e82f00892ca7381f0282d6879bc489db3b97d482 | |
parent | 2d9df9163ff40ee46f689f4d9ffbfad3b0bff9cd (diff) | |
download | stasis-edc047fa3167fd89efde193a137e94eac35f93ac.tar.gz |
Free resources on error
* TODO: Use a goto for this one.
-rw-r--r-- | src/deliverable.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/deliverable.c b/src/deliverable.c index fa09e11..12be732 100644 --- a/src/deliverable.c +++ b/src/deliverable.c @@ -882,8 +882,7 @@ struct StrList *delivery_build_wheels(struct Delivery *ctx) { { if (python_exec("-m build -w ")) { fprintf(stderr, "failed to generate wheel package for %s-%s\n", ctx->tests[i].name, ctx->tests[i].version); - strlist_free(result); - result = NULL; + guard_strlist_free(result); return NULL; } else { DIR *dp; @@ -891,7 +890,7 @@ struct StrList *delivery_build_wheels(struct Delivery *ctx) { dp = opendir("dist"); if (!dp) { fprintf(stderr, "wheel artifact directory does not exist: %s\n", ctx->storage.wheel_artifact_dir); - strlist_free(result); + guard_strlist_free(result); return NULL; } @@ -1594,6 +1593,7 @@ int delivery_mission_render_files(struct Delivery *ctx) { } val.as_char_p = strchr(section_name, ':') + 1; if (val.as_char_p && isempty(val.as_char_p)) { + guard_free(data.src); return 1; } sprintf(data.src, "%s/%s/%s", ctx->storage.mission_dir, ctx->meta.mission, val.as_char_p); @@ -1606,12 +1606,14 @@ int delivery_mission_render_files(struct Delivery *ctx) { struct stat st; if (lstat(data.src, &st)) { perror(data.src); + guard_free(data.dest); continue; } contents = calloc(st.st_size + 1, sizeof(*contents)); if (!contents) { perror("template file contents"); + guard_free(data.dest); continue; } @@ -1620,12 +1622,14 @@ int delivery_mission_render_files(struct Delivery *ctx) { if (!fp) { perror(data.src); guard_free(contents); + guard_free(data.dest); continue; } if (fread(contents, st.st_size, sizeof(*contents), fp) < 1) { perror("while reading template file"); guard_free(contents); + guard_free(data.dest); fclose(fp); continue; } @@ -1634,13 +1638,14 @@ int delivery_mission_render_files(struct Delivery *ctx) { msg(OMC_MSG_L3, "Writing %s\n", data.dest); if (tpl_render_to_file(contents, data.dest)) { guard_free(contents); + guard_free(data.dest); continue; } guard_free(contents); + guard_free(data.dest); } guard_free(data.src); - guard_free(data.dest); return 0; } |