config: no need to free 'line' between each call to getline()

getline() will re-use the allocated line if it large enough, or resize
it otherwise. Thus there's no need to free it and set it to NULL
between each call.
This commit is contained in:
Daniel Eklöf 2020-03-02 18:48:29 +01:00
parent 1f33b4a292
commit 1b2050de7b
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

View file

@ -428,21 +428,20 @@ parse_config_file(FILE *f, struct config *conf, const char *path)
#endif #endif
unsigned lineno = 0; unsigned lineno = 0;
char *_line = NULL; char *_line = NULL;
size_t count = 0;
while (true) { while (true) {
errno = 0; errno = 0;
lineno++; lineno++;
_line = NULL;
size_t count = 0;
ssize_t ret = getline(&_line, &count, f); ssize_t ret = getline(&_line, &count, f);
if (ret < 0) { if (ret < 0) {
free(_line);
if (errno != 0) { if (errno != 0) {
LOG_ERRNO("failed to read from configuration"); LOG_ERRNO("failed to read from configuration");
return false; goto err;
} }
break; break;
} }
@ -461,10 +460,8 @@ parse_config_file(FILE *f, struct config *conf, const char *path)
} }
/* Empty line, or comment */ /* Empty line, or comment */
if (line[0] == '\0' || line[0] == '#') { if (line[0] == '\0' || line[0] == '#')
free(_line);
continue; continue;
}
/* Check for new section */ /* Check for new section */
if (line[0] == '[') { if (line[0] == '[') {
@ -487,7 +484,6 @@ parse_config_file(FILE *f, struct config *conf, const char *path)
goto err; goto err;
} }
free(_line);
continue; continue;
} }
@ -510,7 +506,6 @@ parse_config_file(FILE *f, struct config *conf, const char *path)
goto err; goto err;
} }
free(_line);
continue; continue;
} }
@ -521,10 +516,8 @@ parse_config_file(FILE *f, struct config *conf, const char *path)
assert(!isspace(*(value + strlen(value) - 1))); assert(!isspace(*(value + strlen(value) - 1)));
} }
if (key[0] == '#') { if (key[0] == '#')
free(_line);
continue; continue;
}
LOG_DBG("section=%s, key='%s', value='%s'", LOG_DBG("section=%s, key='%s', value='%s'",
section_names[section], key, value); section_names[section], key, value);
@ -534,10 +527,9 @@ parse_config_file(FILE *f, struct config *conf, const char *path)
if (!section_parser(key, value, conf, path, lineno)) if (!section_parser(key, value, conf, path, lineno))
goto err; goto err;
free(_line);
} }
free(_line);
return true; return true;
err: err: