[PATCH] include: Define the _STGMEDIUM_UNION type for C++ only.
Fixes a regression introduced by 732f67ed38a45911d726df8da5a68710d175ba1d Based on a patch from Zebediah Figura <z.figura12(a)gmail.com> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47710 Signed-off-by: Jeff Smith <whydoubt(a)gmail.com> --- This is like https://source.winehq.org/patches/data/175999 except that this version uses #define to blank-out _STGMEDIUM_UNION for non-C++, rather than having an idl version of the enclosing struct for C++ and a baked version of that struct for non-C++. include/objidl.idl | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/include/objidl.idl b/include/objidl.idl index a0ad1f6e01..844b94af86 100644 --- a/include/objidl.idl +++ b/include/objidl.idl @@ -1426,8 +1426,14 @@ interface IAdviseSink : IUnknown default: wireHGLOBAL hGeneric; } GDI_OBJECT; + /* Defining the _STGMEDIUM_UNION type yields a violation of the C spec when + * NONAMELESSUNION is not defined, so only define it for C++. */ + cpp_quote("#ifndef __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("#ifndef __cplusplus") + cpp_quote("#undef _STGMEDIUM_UNION") + cpp_quote("#endif") + typedef [unique] userSTGMEDIUM *wireSTGMEDIUM; typedef [wire_marshal(wireSTGMEDIUM)] uSTGMEDIUM STGMEDIUM; -- 2.23.0
Jeff Smith <whydoubt(a)gmail.com> writes:
@@ -1426,8 +1426,14 @@ interface IAdviseSink : IUnknown default: wireHGLOBAL hGeneric; } GDI_OBJECT;
+ /* Defining the _STGMEDIUM_UNION type yields a violation of the C spec when + * NONAMELESSUNION is not defined, so only define it for C++. */ + cpp_quote("#ifndef __cplusplus") + cpp_quote("#define _STGMEDIUM_UNION") + cpp_quote("#endif")
You may want to make this conditional on NONAMELESSUNION then. This way there's an easy way to get the definition if necessary. -- Alexandre Julliard julliard(a)winehq.org
participants (2)
-
Alexandre Julliard -
Jeff Smith