[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