Signed-off-by: Jacek Caban jacek@codeweavers.com --- dlls/amstream/tests/Makefile.in | 1 - dlls/amstream/tests/amstream.c | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-)
Old versions of GCC can't handle nameless unions in designated initializers. See https://bugs.winehq.org/show_bug.cgi?id=50378 and 402532b3f.
On 3/23/21 12:37 AM, Zebediah Figura (she/her) wrote:
Old versions of GCC can't handle nameless unions in designated initializers. See https://bugs.winehq.org/show_bug.cgi?id=50378 and 402532b3f.
Good to know, thanks for catching it. Let's skip the first patch for now.
Jacek
On Tue, 23 Mar 2021 at 00:30, Jacek Caban jacek@codeweavers.com wrote:
Signed-off-by: Jacek Caban jacek@codeweavers.com
dlls/amstream/tests/Makefile.in | 1 - dlls/amstream/tests/amstream.c | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-)
I don't particularly care about what amstream does, but more broadly, I have to say I think nameless unions are somewhat of a misfeature, mostly just obfuscating things, not unlike overzealous typedefs.
On 3/23/21 12:06 PM, Henri Verbeet wrote:
On Tue, 23 Mar 2021 at 00:30, Jacek Caban jacek@codeweavers.com wrote:
Signed-off-by: Jacek Caban jacek@codeweavers.com
dlls/amstream/tests/Makefile.in | 1 - dlls/amstream/tests/amstream.c | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-)
I don't particularly care about what amstream does, but more broadly, I have to say I think nameless unions are somewhat of a misfeature, mostly just obfuscating things, not unlike overzealous typedefs.
Sure, but that's not really what those patches are about. They are a follow-up for sake of a consistency after b39b9eea39b19a8f, which was motivated by compatibility problems fixed by ee587da9e5b1276. They are not about liking nameless unions or not.
Let me explain: Microsoft uses quite a lot of nameless unions in Windows API. It also provides a standardized way to opt-out of using them with NONAMELESSUNIONS macro. That covers majority of use cases and it is not affected by this series. There are, however, cases where it's not used by Microsoft and we have a mechanism for Wine to opt-out of them anyway. This is not compatible with the rest of the world, so it can easily cause problems like bug 50836. It's disabled by default now, except for modules that opt-in to it. This makes the situation inconsistent inside Wine, which is what this series addresses.
That said, if there is a reason to keep using it for some modules, it's still there. I would suggest to move it out of makefile and treat it like we do with NONAMELESSUNIONS in that case.
Jacek