diff --git a/src/feature/nodelist/routerset.c b/src/feature/nodelist/routerset.c index 76777847ef..12965ad0d8 100644 --- a/src/feature/nodelist/routerset.c +++ b/src/feature/nodelist/routerset.c @@ -479,6 +479,10 @@ routerset_kv_parse(void *target, const config_line_t *line, char **errmsg, *errmsg = tor_strdup("Invalid router list."); return -1; } else { + if (routerset_is_empty(rs)) { + /* Represent empty sets as NULL. */ + routerset_free(rs); + } *p = rs; return 0; } @@ -507,8 +511,10 @@ routerset_copy(void *dest, const void *src, const void *params) routerset_t **output = (routerset_t**)dest; const routerset_t *input = *(routerset_t**)src; routerset_free(*output); // sets *output to NULL - *output = routerset_new(); - routerset_union(*output, input); + if (! routerset_is_empty(input)) { + *output = routerset_new(); + routerset_union(*output, input); + } return 0; }