This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] assert: Suppress pedantic warning caused by statement expression [BZ# 21242]


On Wed, Jul 5, 2017 at 11:51 AM, Florian Weimer <fweimer@redhat.com> wrote:
> On 07/05/2017 05:46 PM, Zack Weinberg wrote:
>> A problem occurs to me: expressions involving VLAs _are_ evaluated
>> inside sizeof.
>
> The type of the sizeof argument would still be int (due to the
> comparison against 0), so this doesn't actually occur.

I rechecked what C99 says about sizeof and VLAs, and you're right -
the operand of sizeof is only evaluated when sizeof is _directly_
applied to a VLA.  So this is indeed safe, but I think this wrinkle
should be mentioned in the comment.  Perhaps

/* The first occurrence of EXPR is not evaluated due to the sizeof,
   but will trigger any pedantic warnings masked by the __extension__
   for the second occurrence.  The explicit comparison against zero
   ensures that sizeof is not directly applied to a function pointer or
   bit-field (which would be ill-formed) or VLA (which would be evaluated).  */

zw


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]