[PATCH] include: Define the _STGMEDIUM_UNION type for C++.
Zebediah Figura
z.figura12 at gmail.com
Wed Dec 18 11:53:04 CST 2019
This fixes a regression introduced by 732f67ed38a45911d726df8da5a68710d175ba1d.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47710
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
include/objidl.idl | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/include/objidl.idl b/include/objidl.idl
index a0ad1f6e01..a5466c3698 100644
--- a/include/objidl.idl
+++ b/include/objidl.idl
@@ -1426,8 +1426,11 @@ 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("#ifdef __cplusplus")
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;
@@ -1439,6 +1442,23 @@ interface IAdviseSink : IUnknown
} DUMMYUNIONNAME;
IUnknown *pUnkForRelease;
} userSTGMEDIUM;
+cpp_quote("#else")
+cpp_quote("typedef struct _userSTGMEDIUM {")
+cpp_quote(" struct {")
+cpp_quote(" DWORD tymed;")
+cpp_quote(" union {")
+cpp_quote(" wireHMETAFILEPICT hMetaFilePict;")
+cpp_quote(" wireHENHMETAFILE hHEnhMetaFile;")
+cpp_quote(" GDI_OBJECT *hGdiHandle;")
+cpp_quote(" wireHGLOBAL hGlobal;")
+cpp_quote(" LPOLESTR lpszFileName;")
+cpp_quote(" BYTE_BLOB *pstm;")
+cpp_quote(" BYTE_BLOB *pstg;")
+cpp_quote(" } u;")
+cpp_quote(" } DUMMYUNIONNAME;")
+cpp_quote(" IUnknown *pUnkForRelease;")
+cpp_quote("} userSTGMEDIUM;")
+cpp_quote("#endif")
typedef [unique] userSTGMEDIUM *wireSTGMEDIUM;
typedef [wire_marshal(wireSTGMEDIUM)] uSTGMEDIUM STGMEDIUM;
--
2.24.1
More information about the wine-devel
mailing list