mirror of
git://source.winehq.org/git/wine.git
synced 2024-07-21 12:54:10 +00:00
ole32: In the non-aggregated case a request for IUnknown actually returns IOleCache2.
Signed-off-by: Huw Davies <huw@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
52f686e054
commit
87ccecbfa2
|
@ -1123,7 +1123,10 @@ static HRESULT WINAPI DataCache_NDIUnknown_QueryInterface(
|
|||
|
||||
if (IsEqualIID(&IID_IUnknown, riid))
|
||||
{
|
||||
*ppvObject = iface;
|
||||
if (this->outer_unk == iface) /* non-aggregated, return IUnknown from IOleCache2 */
|
||||
*ppvObject = &this->IOleCache2_iface;
|
||||
else
|
||||
*ppvObject = iface;
|
||||
}
|
||||
else if (IsEqualIID(&IID_IDataObject, riid))
|
||||
{
|
||||
|
|
|
@ -1560,7 +1560,7 @@ static void test_data_cache(void)
|
|||
IOleCache2 *pOleCache;
|
||||
IOleCache *olecache;
|
||||
IStorage *pStorage;
|
||||
IUnknown *unk;
|
||||
IUnknown *unk, *unk2;
|
||||
IPersistStorage *pPS;
|
||||
IViewObject *pViewObject;
|
||||
IOleCacheControl *pOleCacheControl;
|
||||
|
@ -1651,10 +1651,12 @@ static void test_data_cache(void)
|
|||
ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||
hr = IUnknown_QueryInterface(unk, &IID_IOleCache2, (void**)&pOleCache);
|
||||
ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||
todo_wine {
|
||||
hr = IUnknown_QueryInterface(unk, &IID_IUnknown, (void**)&unk2);
|
||||
ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||
ok(unk == (IUnknown*)olecache, "got %p, expected %p\n", olecache, unk);
|
||||
ok(unk == (IUnknown*)pOleCache, "got %p, expected %p\n", pOleCache, unk);
|
||||
}
|
||||
ok(unk == unk2, "got %p, expected %p\n", unk2, unk);
|
||||
IUnknown_Release(unk2);
|
||||
IOleCache2_Release(pOleCache);
|
||||
IOleCache_Release(olecache);
|
||||
IUnknown_Release(unk);
|
||||
|
|
Loading…
Reference in a new issue