[Wine-patches] [eter-2.1 1/4] ole32: Read the class id from the top-level storage object. (eterbug #10620)
Dmitry Timoshkov
dtimoshkov на etersoft.ru
Пн Июл 6 09:37:08 MSK 2015
The cache_entries' storages are just references to the same object anyway.
(cherry picked from commit c5e020c5b5c0218a146d11cd5fba5aadb6f380cf)
---
dlls/ole32/datacache.c | 34 ++++++++++++++--------------------
1 file changed, 14 insertions(+), 20 deletions(-)
diff --git a/dlls/ole32/datacache.c b/dlls/ole32/datacache.c
index 3e5e99c..195f28f 100644
--- a/dlls/ole32/datacache.c
+++ b/dlls/ole32/datacache.c
@@ -1177,34 +1177,28 @@ static ULONG WINAPI DataCache_IPersistStorage_Release(
/************************************************************************
* DataCache_GetClassID (IPersistStorage)
*
- * The data cache doesn't implement this method.
*/
-static HRESULT WINAPI DataCache_GetClassID(
- IPersistStorage* iface,
- CLSID* pClassID)
+static HRESULT WINAPI DataCache_GetClassID(IPersistStorage *iface, CLSID *clsid)
{
- DataCache *This = impl_from_IPersistStorage(iface);
- DataCacheEntry *cache_entry;
+ DataCache *This = impl_from_IPersistStorage( iface );
+ HRESULT hr;
+ STATSTG statstg;
- TRACE("(%p, %p)\n", iface, pClassID);
+ TRACE( "(%p, %p)\n", iface, clsid );
- LIST_FOR_EACH_ENTRY(cache_entry, &This->cache_list, DataCacheEntry, entry)
- {
- if (cache_entry->storage != NULL)
+ if (This->presentationStorage)
{
- STATSTG statstg;
- HRESULT hr = IStorage_Stat(cache_entry->storage, &statstg, STATFLAG_NONAME);
- if (SUCCEEDED(hr))
- {
- *pClassID = statstg.clsid;
- return S_OK;
- }
+ hr = IStorage_Stat( This->presentationStorage, &statstg, STATFLAG_NONAME );
+ if (SUCCEEDED(hr))
+ {
+ *clsid = statstg.clsid;
+ return S_OK;
+ }
}
- }
- *pClassID = CLSID_NULL;
+ *clsid = CLSID_NULL;
- return S_OK;
+ return S_OK;
}
/************************************************************************
--
2.4.5
--
Dmitry.
Подробная информация о списке рассылки Wine-patches