mirror of
https://github.com/mpv-player/mpv.git
synced 2026-10-28 14:29:25 +08:00
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:
+7
-4
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user