diff options
Diffstat (limited to 'm_config.c')
-rw-r--r-- | m_config.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/m_config.c b/m_config.c index 11272766d2..c8cf250807 100644 --- a/m_config.c +++ b/m_config.c @@ -161,7 +161,7 @@ static int config_destroy(void *p) { struct m_config *config = p; for (struct m_config_option *copt = config->opts; copt; copt = copt->next) { - if (copt->flags & M_CFG_OPT_ALIAS) + if (copt->alias_owner) continue; if (copt->opt->type->flags & M_OPT_TYPE_DYNAMIC) { m_option_free(copt->opt, copt->data); @@ -219,14 +219,14 @@ void m_config_free(struct m_config *config) static void ensure_backup(struct m_config *config, struct m_config_option *co) { + while (co->alias_owner) + co = co->alias_owner; if (!config->file_local_mode) return; if (co->opt->type->flags & M_OPT_TYPE_HAS_CHILD) return; if (co->opt->flags & M_OPT_GLOBAL) return; - if (co->flags & M_CFG_OPT_ALIAS) - return; if (co->global_backup) return; co->global_backup = talloc_zero_size(co, co->opt->type->size); @@ -319,12 +319,12 @@ static void m_config_add_option(struct m_config *config, for (struct m_config_option *i = config->opts; i; i = i->next) { if (co->data == i->data) { // So we don't save the same vars more than 1 time - co->flags |= M_CFG_OPT_ALIAS; + co->alias_owner = i; break; } } } - if (co->flags & M_CFG_OPT_ALIAS) { + if (co->alias_owner) { assert(!arg->defval); } else { if (arg->defval) { |