return !strv_isempty(i->also);
}
+static void unit_file_preset_rule_done(UnitFilePresetRule *rule) {
+ assert(rule);
+
+ free(rule->pattern);
+ strv_free(rule->instances);
+}
+
void unit_file_presets_freep(UnitFilePresets *p) {
if (!p)
return;
- for (size_t i = 0; i < p->n_rules; i++) {
- free(p->rules[i].pattern);
- strv_free(p->rules[i].instances);
- }
+ for (size_t i = 0; i < p->n_rules; i++)
+ unit_file_preset_rule_done(&p->rules[i]);
free(p->rules);
p->n_rules = 0;
for (;;) {
_cleanup_free_ char *line = NULL;
- UnitFilePresetRule rule = {};
+ _cleanup_(unit_file_preset_rule_done) UnitFilePresetRule rule = {};
const char *parameter;
char *l;
if (!GREEDY_REALLOC(ps.rules, ps.n_rules + 1))
return -ENOMEM;
- ps.rules[ps.n_rules++] = rule;
+ ps.rules[ps.n_rules++] = TAKE_STRUCT(rule);
continue;
}