[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