ole32: Return IUnknown from GITCF_CreateInstance if requested.

Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
oldstable
Alex Henrie 2018-07-10 11:45:46 +02:00 committed by Alexandre Julliard
parent ef64f27632
commit 6187e8db0b
1 changed files with 9 additions and 7 deletions

View File

@ -122,9 +122,14 @@ StdGlobalInterfaceTable_QueryInterface(IGlobalInterfaceTable* iface,
/* Do we implement that interface? */ /* Do we implement that interface? */
if (IsEqualIID(&IID_IUnknown, riid) || if (IsEqualIID(&IID_IUnknown, riid) ||
IsEqualIID(&IID_IGlobalInterfaceTable, riid)) IsEqualIID(&IID_IGlobalInterfaceTable, riid))
{
*ppvObject = iface; *ppvObject = iface;
}
else else
{
FIXME("(%s), not supported.\n", debugstr_guid(riid));
return E_NOINTERFACE; return E_NOINTERFACE;
}
/* Now inc the refcount */ /* Now inc the refcount */
IGlobalInterfaceTable_AddRef(iface); IGlobalInterfaceTable_AddRef(iface);
@ -314,13 +319,10 @@ static HRESULT WINAPI
GITCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pUnk, GITCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pUnk,
REFIID riid, LPVOID *ppv) REFIID riid, LPVOID *ppv)
{ {
if (IsEqualIID(riid,&IID_IGlobalInterfaceTable)) { IGlobalInterfaceTable *git = get_std_git();
IGlobalInterfaceTable *git = get_std_git(); HRESULT hr = IGlobalInterfaceTable_QueryInterface(git, riid, ppv);
return IGlobalInterfaceTable_QueryInterface(git, riid, ppv); IGlobalInterfaceTable_Release(git);
} return hr;
FIXME("(%s), not supported.\n",debugstr_guid(riid));
return E_NOINTERFACE;
} }
static HRESULT WINAPI GITCF_LockServer(LPCLASSFACTORY iface, BOOL fLock) static HRESULT WINAPI GITCF_LockServer(LPCLASSFACTORY iface, BOOL fLock)