https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93582

--- Comment #6 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
(In reply to Adam Jackson from comment #5)
> (In reply to Martin Sebor from comment #4)
> > It seems like the reporter might be conflating the forming of a past-the-end
> > pointer (what the GRABEXT macro does) with dereferencing that pointer (the
> > use of the -> operator with the result).
> 
> I'm not conflating it, I'm pretty sure the whole point of computing that
> address
> is to dereference it because that's where the data I want is. The caller is
> doing somemthing of the form:
> 
> struct image {
>     int w, h, bpp;
>     // unsigned char pixels[];
> };
> 
> struct image *i = malloc(sizeof(*i) + w * h * bpp);
> 
> This is not uncommon in code older than zero-length arrays.

Well, zero-length arrays are a GNU C extension, but pre-C99 you could use
pixels[1] and post-C99 you can use pixels[].  Is non of that an option?

Reply via email to