Looks like I missed replacing the ITypeInfo casts with impl_from calls, e.g.: static HRESULT WINAPI ITypeInfo_fnGetTypeComp( ITypeInfo2 *iface, ITypeComp * *ppTComp) { ITypeInfoImpl *This = (ITypeInfoImpl *)iface; You can apply these, or wait until I amend them to fix that, too. Whichever.
Andrew
On Wed, May 08, 2013 at 03:12:45PM -0500, Andrew Eikum wrote:
dlls/oleaut32/typelib.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c index e62fa84..c6d2189 100644 --- a/dlls/oleaut32/typelib.c +++ b/dlls/oleaut32/typelib.c @@ -1094,8 +1094,8 @@ typedef struct tagTLBImplType /* internal TypeInfo data */ typedef struct tagITypeInfoImpl {
- const ITypeInfo2Vtbl *lpVtbl;
- const ITypeCompVtbl *lpVtblTypeComp;
- ITypeInfo2 ITypeInfo2_iface;
- ITypeComp ITypeComp_iface; LONG ref; BOOL not_attached_to_typelib; TYPEATTR TypeAttr ; /* _lots_ of type information. */
@@ -1125,7 +1125,7 @@ typedef struct tagITypeInfoImpl
static inline ITypeInfoImpl *info_impl_from_ITypeComp( ITypeComp *iface ) {
- return (ITypeInfoImpl *)((char*)iface - FIELD_OFFSET(ITypeInfoImpl, lpVtblTypeComp));
- return CONTAINING_RECORD(iface, ITypeInfoImpl, ITypeComp_iface);
}
static const ITypeInfo2Vtbl tinfvt; @@ -4884,7 +4884,7 @@ static HRESULT WINAPI ITypeLibComp_fnBind( if (pTypeInfo->Name && !strcmpW(pTypeInfo->Name, szName)) { *pDescKind = DESCKIND_TYPECOMP;
pBindPtr->lptcomp = (ITypeComp *)&pTypeInfo->lpVtblTypeComp;
pBindPtr->lptcomp = &pTypeInfo->ITypeComp_iface; ITypeComp_AddRef(pBindPtr->lptcomp); TRACE("module or enum: %s\n", debugstr_w(szName)); return S_OK;
@@ -4894,7 +4894,7 @@ static HRESULT WINAPI ITypeLibComp_fnBind( if ((pTypeInfo->TypeAttr.typekind == TKIND_MODULE) || (pTypeInfo->TypeAttr.typekind == TKIND_ENUM)) {
ITypeComp *pSubTypeComp = (ITypeComp *)&pTypeInfo->lpVtblTypeComp;
ITypeComp *pSubTypeComp = &pTypeInfo->ITypeComp_iface; HRESULT hr; hr = ITypeComp_Bind(pSubTypeComp, szName, lHash, wFlags, ppTInfo, pDescKind, pBindPtr);
@@ -4910,7 +4910,7 @@ static HRESULT WINAPI ITypeLibComp_fnBind( if ((pTypeInfo->TypeAttr.typekind == TKIND_COCLASS) && (pTypeInfo->TypeAttr.wTypeFlags & TYPEFLAG_FAPPOBJECT)) {
ITypeComp *pSubTypeComp = (ITypeComp *)&pTypeInfo->lpVtblTypeComp;
ITypeComp *pSubTypeComp = &pTypeInfo->ITypeComp_iface; HRESULT hr; ITypeInfo *subtypeinfo; BINDPTR subbindptr;
@@ -5013,9 +5013,9 @@ static HRESULT WINAPI ITypeLibComp_fnBindType( if (pTypeInfo->Name && !strcmpiW(pTypeInfo->Name, szName)) { TRACE("returning %p\n", pTypeInfo);
*ppTInfo = (ITypeInfo *)&pTypeInfo->lpVtbl;
*ppTInfo = (ITypeInfo *)&pTypeInfo->ITypeInfo2_iface; ITypeInfo_AddRef(*ppTInfo);
*ppTComp = (ITypeComp *)&pTypeInfo->lpVtblTypeComp;
*ppTComp = &pTypeInfo->ITypeComp_iface; ITypeComp_AddRef(*ppTComp); return S_OK; }
@@ -5046,8 +5046,8 @@ static ITypeInfoImpl* ITypeInfoImpl_Constructor(void) pTypeInfoImpl = heap_alloc_zero(sizeof(ITypeInfoImpl)); if (pTypeInfoImpl) {
pTypeInfoImpl->lpVtbl = &tinfvt;
pTypeInfoImpl->lpVtblTypeComp = &tcompvt;
pTypeInfoImpl->ITypeInfo2_iface.lpVtbl = &tinfvt;
pTypeInfoImpl->ITypeComp_iface.lpVtbl = &tcompvt; pTypeInfoImpl->ref = 0; pTypeInfoImpl->hreftype = -1; pTypeInfoImpl->TypeAttr.memidConstructor = MEMBERID_NIL;
@@ -5238,7 +5238,7 @@ static HRESULT WINAPI ITypeInfo_fnGetTypeComp( ITypeInfo2 *iface,
TRACE("(%p)->(%p)\n", This, ppTComp);
- *ppTComp = (ITypeComp *)&This->lpVtblTypeComp;
- *ppTComp = &This->ITypeComp_iface; ITypeComp_AddRef(*ppTComp); return S_OK;
} @@ -6999,7 +6999,7 @@ static HRESULT WINAPI ITypeInfo_fnGetRefTypeInfo(
if ((This->hreftype != -1) && (This->hreftype == hRefType)) {
*ppTInfo = (ITypeInfo *)&This->lpVtbl;
}*ppTInfo = (ITypeInfo *)&This->ITypeInfo2_iface; ITypeInfo_AddRef(*ppTInfo); result = S_OK;
@@ -7913,7 +7913,7 @@ static HRESULT WINAPI ITypeComp_fnBind( if (FAILED(hr)) return hr; *pDescKind = DESCKIND_FUNCDESC;
*ppTInfo = (ITypeInfo *)&This->lpVtbl;
} else {*ppTInfo = (ITypeInfo *)&This->ITypeInfo2_iface; ITypeInfo_AddRef(*ppTInfo); return S_OK;
@@ -7923,7 +7923,7 @@ static HRESULT WINAPI ITypeComp_fnBind( if (FAILED(hr)) return hr; *pDescKind = DESCKIND_VARDESC;
*ppTInfo = (ITypeInfo *)&This->lpVtbl;
*ppTInfo = (ITypeInfo *)&This->ITypeInfo2_iface; ITypeInfo_AddRef(*ppTInfo); return S_OK; }
@@ -7934,7 +7934,7 @@ static HRESULT WINAPI ITypeComp_fnBind( ITypeInfo *pTInfo; ITypeComp *pTComp; HRESULT hr;
hr=ITypeInfo_GetRefTypeInfo((ITypeInfo *)&This->lpVtbl, This->impltypes[0].hRef, &pTInfo);
hr=ITypeInfo2_GetRefTypeInfo(&This->ITypeInfo2_iface, This->impltypes[0].hRef, &pTInfo); if (SUCCEEDED(hr)) { hr = ITypeInfo_GetTypeComp(pTInfo,&pTComp);
-- 1.8.2.2