mirror of https://github.com/mpv-player/mpv
options: Make dynamic dup hack work with new options
The option system has a hack that converts default values (potentially constants) of dynamically allocated options to allocated ones when the options are first added to the config system, so that all values can be equally freed later. Make this work with new-style options in the option struct too.
This commit is contained in:
parent
e61ac5e9cb
commit
bb12a33f9a
11
m_config.c
11
m_config.c
|
@ -229,10 +229,13 @@ m_config_add_option(m_config_t *config, const m_option_t *arg, const char* prefi
|
|||
m_option_save(config, arg, sl->data);
|
||||
// Hack to avoid too much trouble with dynamically allocated data :
|
||||
// We always use a dynamic version
|
||||
if ((arg->type->flags & M_OPT_TYPE_DYNAMIC) && arg->p
|
||||
&& (*(void**)arg->p)) {
|
||||
*(void**)arg->p = NULL;
|
||||
m_option_set(config, arg, sl->data);
|
||||
if ((arg->type->flags & M_OPT_TYPE_DYNAMIC)) {
|
||||
char **hackptr = arg->new ? (char*)config->optstruct + arg->offset
|
||||
: arg->p;
|
||||
if (hackptr && *hackptr) {
|
||||
*hackptr = NULL;
|
||||
m_option_set(config, arg, sl->data);
|
||||
}
|
||||
}
|
||||
sl->lvl = 0;
|
||||
sl->prev = NULL;
|
||||
|
|
Loading…
Reference in New Issue