From 6cfda676f7e0d1d2ab75a01aa66c0269659218de Mon Sep 17 00:00:00 2001 From: Jeff Smith Date: Sun, 22 Dec 2019 23:56:36 -0600 Subject: [PATCH] include: Declare _STGMEDIUM_UNION type except when it violates C spec. Fixes a regression introduced by 732f67ed38a45911d726df8da5a68710d175ba1d Based on a patch from Zebediah Figura Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47710 Signed-off-by: Jeff Smith Signed-off-by: Alexandre Julliard --- include/objidl.idl | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/include/objidl.idl b/include/objidl.idl index a0ad1f6e01f..a86ceb8b1d6 100644 --- a/include/objidl.idl +++ b/include/objidl.idl @@ -1426,8 +1426,14 @@ interface IAdviseSink : IUnknown default: wireHGLOBAL hGeneric; } GDI_OBJECT; + /* When NONAMELESSUNION is not defined, the presence of _STGMEDIUM_UNION + * violates the C spec, but is necessary for C++. Avoid C spec violation. */ + cpp_quote("#if !defined(NONAMELESSUNION) && !defined(__cplusplus)") + cpp_quote("#define _STGMEDIUM_UNION") + cpp_quote("#endif") + typedef struct _userSTGMEDIUM { - union switch(DWORD tymed) u { + union _STGMEDIUM_UNION switch(DWORD tymed) u { case TYMED_NULL: ; case TYMED_MFPICT: wireHMETAFILEPICT hMetaFilePict; case TYMED_ENHMF: wireHENHMETAFILE hHEnhMetaFile; @@ -1440,6 +1446,10 @@ interface IAdviseSink : IUnknown IUnknown *pUnkForRelease; } userSTGMEDIUM; + cpp_quote("#if !defined(NONAMELESSUNION) && !defined(__cplusplus)") + cpp_quote("#undef _STGMEDIUM_UNION") + cpp_quote("#endif") + typedef [unique] userSTGMEDIUM *wireSTGMEDIUM; typedef [wire_marshal(wireSTGMEDIUM)] uSTGMEDIUM STGMEDIUM;