On 10/24/05, Alex Villacís Lasso a_villacis@palosanto.com wrote:
The application uses DBGRID32.OCX, and this particular control has problems running under Wine. I found this same bug and sent a patch in order to fix it (OLEAUT32: add additional condition for creation of interface). ... [http://www.mail-archive.com/wine-devel@winehq.org/msg20180.html]
It does keep the app from crashing. I removed the unneeded casts as Robert Shearman suggested:
--- dlls/oleaut32/typelib.c 18 Oct 2005 14:09:47 -0000 1.171 +++ dlls/oleaut32/typelib.c 25 Oct 2005 06:29:48 -0000 @@ -5213,9 +5213,11 @@ ITypeInfoImpl *This = (ITypeInfoImpl *)iface; HRESULT result = E_FAIL;
- if (hRefType == -1 && - (((ITypeInfoImpl*) This)->TypeAttr.typekind == TKIND_DISPATCH) && - (((ITypeInfoImpl*) This)->TypeAttr.wTypeFlags & TYPEFLAG_FDUAL)) + if ((hRefType == -1 && + (This->TypeAttr.typekind == TKIND_DISPATCH) && + (This->TypeAttr.wTypeFlags & TYPEFLAG_FDUAL)) + || ((This->TypeAttr.typekind == TKIND_DISPATCH) && + (This->TypeAttr.wTypeFlags & TYPEFLAG_FDISPATCHABLE))) { /* when we meet a DUAL dispinterface, we must create the interface * version of it.