On 12/17/19 12:42 PM, Alexandre Julliard wrote:
Zebediah Figura zfigura@codeweavers.com writes:
On 12/17/19 11:37 AM, Alexandre Julliard wrote:
Zebediah Figura z.figura12@gmail.com writes:
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47710 Signed-off-by: Zebediah Figura z.figura12@gmail.com
This is not currently necessary, but will be with the prescribed solution for bug 47710, viz. defining the type _STGMEDIUM_UNION.
I'm not sure I understand what fix you are proposing, but if it requires Winelib users to also define NONAMELESSUNION I don't think it's a viable solution.
Essentially, this:
diff --git a/include/objidl.idl b/include/objidl.idl index a0ad1f6e01f..4c56c422747 100644 --- a/include/objidl.idl +++ b/include/objidl.idl @@ -1427,7 +1427,7 @@ interface IAdviseSink : IUnknown } GDI_OBJECT;
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;
Which causes warnings anywhere that nameless unions are used:
In file included from ../../../wine/include/objbase.h:258, from ../../../wine/include/ole2.h:25, from ../../include/strmif.h:13, from ../../../wine/dlls/wmcodecdspuuid/wmcodecdspuuid.c:22: ../../include/objidl.h:6109:21: warning: declaration does not declare anything 6109 | } DUMMYUNIONNAME;
I'm afraid we'll have to find a different fix then.
I understand the difficulty, but I'm not sure what else we can reasonably do here. As far as I can see either we have to throw C++ under the bus (i.e. close that bug as WONTFIX), or we have to add specific differences into widl (or objidl.idl) for winelib, to avoid violating the C spec. That either means making the structure type anonymous (i.e. not defining _STGMEDIUM_UNION), which is not particularly great (not that it's particularly likely anyone would want to use the _STGMEDIUM_UNION type), or forcibly giving the union member a name (which would also potentially require changes in winelib user code).
But maybe I'm missing another, more perfect option.