core: don't synthesize empty list when empty string is read in config_parse_strv()

This was added to make
https://bugs.freedesktop.org/show_bug.cgi?id=62558 work, which has long
been removed, hence let's revert to the original behaviour and fully
flush out the list when an empty string is assigned.
This commit is contained in:
Lennart Poettering 2017-09-14 16:53:34 +02:00
parent 60c776fd75
commit 8249bb728d
1 changed files with 13 additions and 23 deletions

View File

@ -755,16 +755,17 @@ finalize:
return 0;
}
int config_parse_strv(const char *unit,
const char *filename,
unsigned line,
const char *section,
unsigned section_line,
const char *lvalue,
int ltype,
const char *rvalue,
void *data,
void *userdata) {
int config_parse_strv(
const char *unit,
const char *filename,
unsigned line,
const char *section,
unsigned section_line,
const char *lvalue,
int ltype,
const char *rvalue,
void *data,
void *userdata) {
char ***sv = data;
int r;
@ -775,19 +776,7 @@ int config_parse_strv(const char *unit,
assert(data);
if (isempty(rvalue)) {
char **empty;
/* Empty assignment resets the list. As a special rule
* we actually fill in a real empty array here rather
* than NULL, since some code wants to know if
* something was set at all... */
empty = new0(char*, 1);
if (!empty)
return log_oom();
strv_free(*sv);
*sv = empty;
*sv = strv_free(*sv);
return 0;
}
@ -809,6 +798,7 @@ int config_parse_strv(const char *unit,
free(word);
continue;
}
r = strv_consume(sv, word);
if (r < 0)
return log_oom();