oleaut32: Fix custdata_list initialization in ITypeInfo_fnGetRefTypeInfo.

This commit is contained in:
Piotr Caban 2013-07-26 14:10:36 +02:00 committed by Alexandre Julliard
parent 88e94c7ef8
commit 4f62fb2eec
1 changed files with 9 additions and 6 deletions

View File

@ -1184,6 +1184,7 @@ typedef struct tagITypeInfoImpl
/* Implemented Interfaces */ /* Implemented Interfaces */
TLBImplType *impltypes; TLBImplType *impltypes;
struct list *pcustdata_list;
struct list custdata_list; struct list custdata_list;
} ITypeInfoImpl; } ITypeInfoImpl;
@ -2599,7 +2600,7 @@ static ITypeInfoImpl * MSFT_DoTypeInfo(
break; break;
} }
} }
MSFT_CustData(pcx, tiBase.oCustData, &ptiRet->custdata_list); MSFT_CustData(pcx, tiBase.oCustData, ptiRet->pcustdata_list);
TRACE_(typelib)("%s guid: %s kind:%s\n", TRACE_(typelib)("%s guid: %s kind:%s\n",
debugstr_w(TLB_get_bstr(ptiRet->Name)), debugstr_w(TLB_get_bstr(ptiRet->Name)),
@ -5367,7 +5368,8 @@ static ITypeInfoImpl* ITypeInfoImpl_Constructor(void)
pTypeInfoImpl->hreftype = -1; pTypeInfoImpl->hreftype = -1;
pTypeInfoImpl->memidConstructor = MEMBERID_NIL; pTypeInfoImpl->memidConstructor = MEMBERID_NIL;
pTypeInfoImpl->memidDestructor = MEMBERID_NIL; pTypeInfoImpl->memidDestructor = MEMBERID_NIL;
list_init(&pTypeInfoImpl->custdata_list); pTypeInfoImpl->pcustdata_list = &pTypeInfoImpl->custdata_list;
list_init(pTypeInfoImpl->pcustdata_list);
} }
TRACE("(%p)\n", pTypeInfoImpl); TRACE("(%p)\n", pTypeInfoImpl);
return pTypeInfoImpl; return pTypeInfoImpl;
@ -7389,6 +7391,7 @@ static HRESULT WINAPI ITypeInfo_fnGetRefTypeInfo(
*pTypeInfoImpl = *This; *pTypeInfoImpl = *This;
pTypeInfoImpl->ref = 0; pTypeInfoImpl->ref = 0;
list_init(&pTypeInfoImpl->custdata_list);
if (This->typekind == TKIND_INTERFACE) if (This->typekind == TKIND_INTERFACE)
pTypeInfoImpl->typekind = TKIND_DISPATCH; pTypeInfoImpl->typekind = TKIND_DISPATCH;
@ -7785,7 +7788,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetCustData(
if(!guid || !pVarVal) if(!guid || !pVarVal)
return E_INVALIDARG; return E_INVALIDARG;
pCData = TLB_get_custdata_by_guid(&This->custdata_list, guid); pCData = TLB_get_custdata_by_guid(This->pcustdata_list, guid);
VariantInit( pVarVal); VariantInit( pVarVal);
if (pCData) if (pCData)
@ -7991,7 +7994,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetAllCustData(
TRACE("%p %p\n", This, pCustData); TRACE("%p %p\n", This, pCustData);
return TLB_copy_all_custdata(&This->custdata_list, pCustData); return TLB_copy_all_custdata(This->pcustdata_list, pCustData);
} }
/* ITypeInfo2::GetAllFuncCustData /* ITypeInfo2::GetAllFuncCustData
@ -9416,7 +9419,7 @@ static DWORD WMSFT_compile_typeinfo(ITypeInfoImpl *info, INT16 index, WMSFT_TLBF
base->docstringoffs = -1; base->docstringoffs = -1;
base->helpstringcontext = info->dwHelpStringContext; base->helpstringcontext = info->dwHelpStringContext;
base->helpcontext = info->dwHelpContext; base->helpcontext = info->dwHelpContext;
base->oCustData = WMSFT_compile_custdata(&info->custdata_list, file); base->oCustData = WMSFT_compile_custdata(info->pcustdata_list, file);
base->cImplTypes = info->cImplTypes; base->cImplTypes = info->cImplTypes;
base->cbSizeVft = info->cbSizeVft; base->cbSizeVft = info->cbSizeVft;
base->size = info->cbSizeInstance; base->size = info->cbSizeInstance;
@ -10756,7 +10759,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnSetCustData(ICreateTypeInfo2 *iface,
tlbguid = TLB_append_guid(&This->pTypeLib->guid_list, guid); tlbguid = TLB_append_guid(&This->pTypeLib->guid_list, guid);
return TLB_set_custdata(&This->custdata_list, tlbguid, varVal); return TLB_set_custdata(This->pcustdata_list, tlbguid, varVal);
} }
static HRESULT WINAPI ICreateTypeInfo2_fnSetFuncCustData(ICreateTypeInfo2 *iface, static HRESULT WINAPI ICreateTypeInfo2_fnSetFuncCustData(ICreateTypeInfo2 *iface,