Hi,
Alexandre Julliard wrote:
it needs to be "foo[]". ANYSIZE_ARRAY is defined as 1
True, you don't want to change the public one, but you can define a shell32-specific version of it. At least then it looks like a normal array declaration.
Thank you for pointing to ANYSIZE_ARRAY.
Why not cope with the way MS people recommend and use foo[ANYSIZE_ARRAY], together with the FIELD_OFFSET() macro? I found this article useful: http://blogs.msdn.com/b/oldnewthing/archive/2004/08/26/220873.aspx and made a note to use that in future patches. It explains why ANYSIZE_ARRAY MUST be 1.
Should somebody submit patches to replace foo[1] with foo[ANYSIZE_ARRAY] where needed in Wine's include/*.h ? E.g. wingdi.h: BITMAPINFO comes to mind, it uses RGBQUAD bmiColors[1]; http://source.winehq.org/source/include/wingdi.h#L1912 ANYSIZE_ARRAY would be a perfect match here.
Perhaps one can teach fortify about ANYSIZE_ARRAY?
Regards, Jörg Höhle