ole32: Fix HandsOffStorage in the data cache.
This commit is contained in:
parent
6235ac9f58
commit
1b244baf48
|
@ -739,6 +739,15 @@ static inline HRESULT DataCacheEntry_DiscardData(DataCacheEntry *This)
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void DataCacheEntry_HandsOffStorage(DataCacheEntry *This)
|
||||||
|
{
|
||||||
|
if (This->storage)
|
||||||
|
{
|
||||||
|
IStorage_Release(This->storage);
|
||||||
|
This->storage = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************************
|
/*********************************************************
|
||||||
* Method implementation for the non delegating IUnknown
|
* Method implementation for the non delegating IUnknown
|
||||||
* part of the DataCache class.
|
* part of the DataCache class.
|
||||||
|
@ -1469,6 +1478,7 @@ static HRESULT WINAPI DataCache_HandsOffStorage(
|
||||||
IPersistStorage* iface)
|
IPersistStorage* iface)
|
||||||
{
|
{
|
||||||
DataCache *this = impl_from_IPersistStorage(iface);
|
DataCache *this = impl_from_IPersistStorage(iface);
|
||||||
|
DataCacheEntry *cache_entry;
|
||||||
|
|
||||||
TRACE("(%p)\n", iface);
|
TRACE("(%p)\n", iface);
|
||||||
|
|
||||||
|
@ -1478,6 +1488,9 @@ static HRESULT WINAPI DataCache_HandsOffStorage(
|
||||||
this->presentationStorage = NULL;
|
this->presentationStorage = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LIST_FOR_EACH_ENTRY(cache_entry, &this->cache_list, DataCacheEntry, entry)
|
||||||
|
DataCacheEntry_HandsOffStorage(cache_entry);
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1273,9 +1273,7 @@ static void test_data_cache(void)
|
||||||
hr = IOleCache2_DiscardCache(pOleCache, DISCARDCACHE_NOSAVE);
|
hr = IOleCache2_DiscardCache(pOleCache, DISCARDCACHE_NOSAVE);
|
||||||
ok_ole_success(hr, "IOleCache2_DiscardCache");
|
ok_ole_success(hr, "IOleCache2_DiscardCache");
|
||||||
hr = IViewObject_Draw(pViewObject, DVASPECT_ICON, -1, NULL, NULL, NULL, hdcMem, &rcBounds, NULL, draw_continue, 0xdeadbeef);
|
hr = IViewObject_Draw(pViewObject, DVASPECT_ICON, -1, NULL, NULL, NULL, hdcMem, &rcBounds, NULL, draw_continue, 0xdeadbeef);
|
||||||
todo_wine {
|
|
||||||
ok(hr == OLE_E_BLANK, "IViewObject_Draw with uncached aspect should have returned OLE_E_BLANK instead of 0x%08x\n", hr);
|
ok(hr == OLE_E_BLANK, "IViewObject_Draw with uncached aspect should have returned OLE_E_BLANK instead of 0x%08x\n", hr);
|
||||||
}
|
|
||||||
|
|
||||||
DeleteDC(hdcMem);
|
DeleteDC(hdcMem);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue