[vlc-devel] [PATCH] modules: Use a typedef for deactivate function pointer
Steve Lhomme
robux4 at ycbcr.xyz
Fri Dec 11 10:00:44 CET 2020
LGTM.
IMO all the modules callbacks should have their own typedef.
On 2020-12-10 19:55, Hugo Beauzée-Luyssen wrote:
> Using va_arg with the function pointer type spelled out can be
> considered ill-formed as per C11 §7.16.1.1
> ---
> src/modules/entry.c | 4 ++--
> src/modules/modules.h | 5 ++++-
> 2 files changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/src/modules/entry.c b/src/modules/entry.c
> index fc7f3cdbb6..1d921d5af0 100644
> --- a/src/modules/entry.c
> +++ b/src/modules/entry.c
> @@ -273,7 +273,7 @@ static int vlc_plugin_desc_cb(void *ctx, void *tgt, int propid, ...)
>
> case VLC_MODULE_CB_CLOSE:
> module->deactivate_name = va_arg(ap, const char *);
> - module->deactivate = va_arg(ap, void (*)(vlc_object_t *));
> + module->deactivate = va_arg(ap, vlc_deactivate_cb);
> break;
>
> case VLC_MODULE_NO_UNLOAD:
> @@ -498,7 +498,7 @@ static int vlc_plugin_gpa_cb(void *ctx, void *tgt, int propid, ...)
>
> va_start(ap, propid);
> name = va_arg(ap, const char *);
> - addr = va_arg(ap, void (*)(vlc_object_t *));
> + addr = va_arg(ap, vlc_deactivate_cb);
> va_end(ap);
> break;
> }
> diff --git a/src/modules/modules.h b/src/modules/modules.h
> index 93cc1ca289..34d6b81dd9 100644
> --- a/src/modules/modules.h
> +++ b/src/modules/modules.h
> @@ -66,6 +66,9 @@ extern struct vlc_plugin_t *vlc_plugins;
> /** Plugin entry point prototype */
> typedef int (*vlc_plugin_cb) (int (*)(void *, void *, int, ...), void *);
>
> +/** Plugin deactivation callback */
> +typedef void (*vlc_deactivate_cb)(vlc_object_t*);
> +
> /** Core module */
> int vlc_entry__core (int (*)(void *, void *, int, ...), void *);
>
> @@ -95,7 +98,7 @@ struct module_t
> const char *activate_name;
> const char *deactivate_name;
> void *pf_activate;
> - void (*deactivate)(vlc_object_t *);
> + vlc_deactivate_cb deactivate;
> };
>
> vlc_plugin_t *vlc_plugin_create(void);
> --
> 2.29.2
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
>
More information about the vlc-devel
mailing list