From: Sergio Gómez Del Real sdelreal@codeweavers.com
Signed-off-by: Sergio Gómez Del Real sdelreal@codeweavers.com Signed-off-by: Huw Davies huw@codeweavers.com --- dlls/ole32/datacache.c | 2 ++ dlls/ole32/tests/ole2.c | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+)
diff --git a/dlls/ole32/datacache.c b/dlls/ole32/datacache.c index 8c5df32f6e..60ddd386ba 100644 --- a/dlls/ole32/datacache.c +++ b/dlls/ole32/datacache.c @@ -2453,6 +2453,8 @@ static HRESULT WINAPI DataCache_Cache( return CACHE_S_SAMECACHE; }
+ if (This->clsid_static) return DV_E_FORMATETC; + hr = DataCache_CreateEntry(This, &fmt_cpy, advf, FALSE, &cache_entry);
if (SUCCEEDED(hr)) diff --git a/dlls/ole32/tests/ole2.c b/dlls/ole32/tests/ole2.c index 7fcb1aa1e0..d83ca00a66 100644 --- a/dlls/ole32/tests/ole2.c +++ b/dlls/ole32/tests/ole2.c @@ -2426,6 +2426,29 @@ static void test_data_cache_cache(void)
IDataObject_Release( data ); IOleCache2_Release( cache ); + + /* tests for a static class cache */ + hr = CreateDataCache( NULL, &CLSID_Picture_Dib, &IID_IOleCache2, (void **)&cache ); + + fmt.cfFormat = CF_DIB; + fmt.dwAspect = DVASPECT_CONTENT; + fmt.tymed = TYMED_HGLOBAL; + hr = IOleCache2_Cache( cache, &fmt, 0, &conn ); + ok( hr == CACHE_S_SAMECACHE, "got %08x\n", hr ); + + /* aspect other than DVASPECT_CONTENT should fail */ + fmt.dwAspect = DVASPECT_THUMBNAIL; + hr = IOleCache2_Cache( cache, &fmt, 0, &conn ); + ok( FAILED(hr), "got %08x\n", hr ); + + /* try caching another clip format */ + fmt.dwAspect = DVASPECT_CONTENT; + fmt.cfFormat = CF_METAFILEPICT; + fmt.tymed = TYMED_MFPICT; + hr = IOleCache2_Cache( cache, &fmt, 0, &conn ); + ok( FAILED(hr), "got %08x\n", hr ); + + IOleCache2_Release( cache ); }
/* The CLSID_Picture_ classes automatically create appropriate cache entries */