Jeff Smith : include: Declare _STGMEDIUM_UNION type except when it violates C spec.

Alexandre Julliard julliard at winehq.org
Mon Dec 23 17:42:11 CST 2019


Module: wine
Branch: master
Commit: 6cfda676f7e0d1d2ab75a01aa66c0269659218de
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=6cfda676f7e0d1d2ab75a01aa66c0269659218de

Author: Jeff Smith <whydoubt at gmail.com>
Date:   Sun Dec 22 23:56:36 2019 -0600

include: Declare _STGMEDIUM_UNION type except when it violates C spec.

Fixes a regression introduced by 732f67ed38a45911d726df8da5a68710d175ba1d
Based on a patch from Zebediah Figura <z.figura12 at gmail.com>

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47710
Signed-off-by: Jeff Smith <whydoubt at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 include/objidl.idl | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/include/objidl.idl b/include/objidl.idl
index a0ad1f6e01..a86ceb8b1d 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;
 




More information about the wine-cvs mailing list