Commit 6b49f68d authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Avoid anonymous compound in add_shortcut (fixes: #3742)

parent fb718f7c
...@@ -120,8 +120,8 @@ enum vlc_module_properties ...@@ -120,8 +120,8 @@ enum vlc_module_properties
/** /**
* Current plugin ABI version * Current plugin ABI version
*/ */
# define MODULE_SYMBOL 1_2_0b # define MODULE_SYMBOL 1_2_0c
# define MODULE_SUFFIX "__1_2_0b" # define MODULE_SUFFIX "__1_2_0c"
/***************************************************************************** /*****************************************************************************
* Add a few defines. You do not want to read this section. Really. * Add a few defines. You do not want to read this section. Really.
...@@ -196,9 +196,12 @@ enum vlc_module_properties ...@@ -196,9 +196,12 @@ enum vlc_module_properties
goto error; goto error;
#define add_shortcut( ... ) \ #define add_shortcut( ... ) \
{ \
const char *shortcuts[] = { __VA_ARGS__ }; \
if (vlc_module_set (p_submodule, VLC_MODULE_SHORTCUT, \ if (vlc_module_set (p_submodule, VLC_MODULE_SHORTCUT, \
sizeof((const char*[]){__VA_ARGS__})/sizeof(const char*), __VA_ARGS__)) \ sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) \
goto error; goto error; \
}
#define set_shortname( shortname ) \ #define set_shortname( shortname ) \
if (vlc_module_set (p_submodule, VLC_MODULE_SHORTNAME, \ if (vlc_module_set (p_submodule, VLC_MODULE_SHORTNAME, \
......
...@@ -183,14 +183,17 @@ int vlc_plugin_set (module_t *module, module_config_t *item, int propid, ...) ...@@ -183,14 +183,17 @@ int vlc_plugin_set (module_t *module, module_config_t *item, int propid, ...)
{ {
unsigned i_shortcuts = va_arg (ap, unsigned); unsigned i_shortcuts = va_arg (ap, unsigned);
unsigned index = module->i_shortcuts; unsigned index = module->i_shortcuts;
module->i_shortcuts += i_shortcuts; const char *const *tab = va_arg (ap, const char *const *);
const char **pp = realloc (module->pp_shortcuts,
module->pp_shortcuts = realloc (module->pp_shortcuts, sizeof( char ** ) * module->i_shortcuts); sizeof (pp[0]) * (index + i_shortcuts));
for (; index < module->i_shortcuts; index++) if (unlikely(pp == NULL))
{ {
const char *psz_new = va_arg (ap, const char*); ret = -1;
module->pp_shortcuts[index] = psz_new; break;
} }
module->pp_shortcuts = pp;
module->i_shortcuts = index + i_shortcuts;
memcpy (pp + index, tab, sizeof (pp[0]) * i_shortcuts);
break; break;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment