mshtml: Move ITypeInfo::Invoke call to separated function.
This commit is contained in:
parent
6478f3d6e2
commit
2e2622efaa
|
@ -430,6 +430,32 @@ static HRESULT dispex_value(DispatchEx *This, LCID lcid, WORD flags, DISPPARAMS
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static HRESULT typeinfo_invoke(DispatchEx *This, func_info_t *func, WORD flags, DISPPARAMS *dp, VARIANT *res,
|
||||||
|
EXCEPINFO *ei)
|
||||||
|
{
|
||||||
|
ITypeInfo *ti;
|
||||||
|
IUnknown *unk;
|
||||||
|
UINT argerr=0;
|
||||||
|
HRESULT hres;
|
||||||
|
|
||||||
|
hres = get_typeinfo(func->tid, &ti);
|
||||||
|
if(FAILED(hres)) {
|
||||||
|
ERR("Could not get type info: %08x\n", hres);
|
||||||
|
return hres;
|
||||||
|
}
|
||||||
|
|
||||||
|
hres = IUnknown_QueryInterface(This->outer, tid_ids[func->tid], (void**)&unk);
|
||||||
|
if(FAILED(hres)) {
|
||||||
|
ERR("Could not get iface %s: %08x\n", debugstr_guid(tid_ids[func->tid]), hres);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
hres = ITypeInfo_Invoke(ti, unk, func->id, flags, dp, res, ei, &argerr);
|
||||||
|
|
||||||
|
IUnknown_Release(unk);
|
||||||
|
return hres;
|
||||||
|
}
|
||||||
|
|
||||||
#define DISPATCHEX_THIS(iface) DEFINE_THIS(DispatchEx, IDispatchEx, iface)
|
#define DISPATCHEX_THIS(iface) DEFINE_THIS(DispatchEx, IDispatchEx, iface)
|
||||||
|
|
||||||
static HRESULT WINAPI DispatchEx_QueryInterface(IDispatchEx *iface, REFIID riid, void **ppv)
|
static HRESULT WINAPI DispatchEx_QueryInterface(IDispatchEx *iface, REFIID riid, void **ppv)
|
||||||
|
@ -570,10 +596,7 @@ static HRESULT WINAPI DispatchEx_InvokeEx(IDispatchEx *iface, DISPID id, LCID lc
|
||||||
VARIANT *pvarRes, EXCEPINFO *pei, IServiceProvider *pspCaller)
|
VARIANT *pvarRes, EXCEPINFO *pei, IServiceProvider *pspCaller)
|
||||||
{
|
{
|
||||||
DispatchEx *This = DISPATCHEX_THIS(iface);
|
DispatchEx *This = DISPATCHEX_THIS(iface);
|
||||||
IUnknown *unk;
|
|
||||||
ITypeInfo *ti;
|
|
||||||
dispex_data_t *data;
|
dispex_data_t *data;
|
||||||
UINT argerr=0;
|
|
||||||
int min, max, n;
|
int min, max, n;
|
||||||
HRESULT hres;
|
HRESULT hres;
|
||||||
|
|
||||||
|
@ -674,22 +697,7 @@ static HRESULT WINAPI DispatchEx_InvokeEx(IDispatchEx *iface, DISPID id, LCID lc
|
||||||
return DISP_E_UNKNOWNNAME;
|
return DISP_E_UNKNOWNNAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
hres = get_typeinfo(data->funcs[n].tid, &ti);
|
return typeinfo_invoke(This, data->funcs+n, wFlags, pdp, pvarRes, pei);
|
||||||
if(FAILED(hres)) {
|
|
||||||
ERR("Could not get type info: %08x\n", hres);
|
|
||||||
return hres;
|
|
||||||
}
|
|
||||||
|
|
||||||
hres = IUnknown_QueryInterface(This->outer, tid_ids[data->funcs[n].tid], (void**)&unk);
|
|
||||||
if(FAILED(hres)) {
|
|
||||||
ERR("Could not get iface %s: %08x\n", debugstr_guid(tid_ids[data->funcs[n].tid]), hres);
|
|
||||||
return E_FAIL;
|
|
||||||
}
|
|
||||||
|
|
||||||
hres = ITypeInfo_Invoke(ti, unk, id, wFlags, pdp, pvarRes, pei, &argerr);
|
|
||||||
|
|
||||||
IUnknown_Release(unk);
|
|
||||||
return hres;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI DispatchEx_DeleteMemberByName(IDispatchEx *iface, BSTR bstrName, DWORD grfdex)
|
static HRESULT WINAPI DispatchEx_DeleteMemberByName(IDispatchEx *iface, BSTR bstrName, DWORD grfdex)
|
||||||
|
|
Loading…
Reference in New Issue