diff --git a/runner/settings.c b/runner/settings.c index afb312dc1cdaab19b246470dc26d5d70eb4fe074..89df4990ea77112def9d0ff2aa1a50e609529d74 100644 --- a/runner/settings.c +++ b/runner/settings.c @@ -1155,13 +1155,10 @@ bool serialize_settings(struct settings *settings) bool read_settings_from_file(struct settings *settings, FILE *f) { -#define PARSE_LINE(s, name, val, field, write) \ - if (!strcmp(name, #field)) { \ - s->field = write; \ - free(name); \ - free(val); \ - name = val = NULL; \ - continue; \ +#define PARSE_LINE(s, name, val, field, write) \ + if (!strcmp(name, #field)) { \ + s->field = write; \ + goto cleanup; \ } char *name = NULL, *val = NULL; @@ -1196,6 +1193,8 @@ bool read_settings_from_file(struct settings *settings, FILE *f) printf("Warning: Unknown field in settings file: %s = %s\n", name, val); + +cleanup: free(name); free(val); name = val = NULL;