[vlc-devel] [PATCH] vlc_list: fix -Wmissing-braces warning
Romain Vimont
rom1v at videolabs.io
Tue Mar 2 10:06:58 UTC 2021
LGTM, thanks.
On Tue, Feb 16, 2021 at 01:59:10PM +0100, Alexandre Janniaux wrote:
> max_align_t type is implementation-specified and thus can be requested
> to be initialized with braces or not. Since the value of
>
> alignof(union{ max_align_t; T; })
>
> is always equal to alignof(max_align_t), uses an union with another
> type that can be initialized with { 0 }. Initialize the union as-is will
> initialize the first field, so won't trigger the warning.
>
> It still uses an initializer, not breaking the change made in previous
> commit c4f0f96452453c5744b93acea4c4f939161225c3.
> ---
> include/vlc_list.h | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/include/vlc_list.h b/include/vlc_list.h
> index 4b29fc757d..a2b2628108 100644
> --- a/include/vlc_list.h
> +++ b/include/vlc_list.h
> @@ -233,8 +233,11 @@ static inline void vlc_list_it_next(struct vlc_list_it *restrict it)
> #define vlc_list_entry_aligned_size(p) \
> ((sizeof (*(p)) + sizeof (max_align_t) - 1) / sizeof (max_align_t))
>
> +#define vlc_list_entry_dummy_zero(p_size) \
> + (union{ char b; max_align_t a; }[(p_size)]){ { 0 } }
> +
> #define vlc_list_entry_dummy(p) \
> - (0 ? (p) : ((void *)(&(max_align_t[vlc_list_entry_aligned_size(p)]){0})))
> + (0 ? (p) : ((void *)( &(vlc_list_entry_dummy_zero(vlc_list_entry_aligned_size(p))) )) )
>
> #define vlc_list_offset_p(p, member) \
> ((p) = vlc_list_entry_dummy(p), (char *)(&(p)->member) - (char *)(p))
> --
> 2.30.1
>
> _______________________________________________
> 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