oleaut32: Fix leak in typelib marshaler when invoking IDispatch methods.
This commit is contained in:
parent
82ef9f960d
commit
8177b4793a
@ -1000,6 +1000,12 @@ static void test_typelibmarshal(void)
|
|||||||
|
|
||||||
IKindaEnumWidget_Release(pKEW);
|
IKindaEnumWidget_Release(pKEW);
|
||||||
|
|
||||||
|
/* call GetTypeInfoCount (direct) */
|
||||||
|
hr = IWidget_GetTypeInfoCount(pWidget, &uval);
|
||||||
|
ok_ole_success(hr, IWidget_GetTypeInfoCount);
|
||||||
|
hr = IWidget_GetTypeInfoCount(pWidget, &uval);
|
||||||
|
ok_ole_success(hr, IWidget_GetTypeInfoCount);
|
||||||
|
|
||||||
hr = IWidget_QueryInterface(pWidget, &IID_IDispatch, (void **)&pDispatch);
|
hr = IWidget_QueryInterface(pWidget, &IID_IDispatch, (void **)&pDispatch);
|
||||||
ok_ole_success(hr, IWidget_QueryInterface);
|
ok_ole_success(hr, IWidget_QueryInterface);
|
||||||
|
|
||||||
|
@ -2002,16 +2002,19 @@ TMStubImpl_Invoke(
|
|||||||
|
|
||||||
if (This->dispatch_derivative && xmsg->iMethod < sizeof(IDispatchVtbl)/sizeof(void *))
|
if (This->dispatch_derivative && xmsg->iMethod < sizeof(IDispatchVtbl)/sizeof(void *))
|
||||||
{
|
{
|
||||||
IPSFactoryBuffer *factory_buffer;
|
if (!This->dispatch_stub)
|
||||||
hres = get_facbuf_for_iid(&IID_IDispatch, &factory_buffer);
|
|
||||||
if (hres == S_OK)
|
|
||||||
{
|
{
|
||||||
hres = IPSFactoryBuffer_CreateStub(factory_buffer, &IID_IDispatch,
|
IPSFactoryBuffer *factory_buffer;
|
||||||
This->pUnk, &This->dispatch_stub);
|
hres = get_facbuf_for_iid(&IID_IDispatch, &factory_buffer);
|
||||||
IPSFactoryBuffer_Release(factory_buffer);
|
if (hres == S_OK)
|
||||||
|
{
|
||||||
|
hres = IPSFactoryBuffer_CreateStub(factory_buffer, &IID_IDispatch,
|
||||||
|
This->pUnk, &This->dispatch_stub);
|
||||||
|
IPSFactoryBuffer_Release(factory_buffer);
|
||||||
|
}
|
||||||
|
if (hres != S_OK)
|
||||||
|
return hres;
|
||||||
}
|
}
|
||||||
if (hres != S_OK)
|
|
||||||
return hres;
|
|
||||||
return IRpcStubBuffer_Invoke(This->dispatch_stub, xmsg, rpcchanbuf);
|
return IRpcStubBuffer_Invoke(This->dispatch_stub, xmsg, rpcchanbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user