Henri Verbeet : shdocvw: Take the riid parameter to TaskbarList_Create() into account.

Alexandre Julliard julliard at winehq.org
Tue Jun 16 09:09:35 CDT 2009


Module: wine
Branch: master
Commit: 697e529c195ca3cea1dd4dc64e1b2897a219324a
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=697e529c195ca3cea1dd4dc64e1b2897a219324a

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Tue Jun 16 09:38:25 2009 +0200

shdocvw: Take the riid parameter to TaskbarList_Create() into account.

---

 dlls/shdocvw/taskbarlist.c |   14 +++++++++++---
 1 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/dlls/shdocvw/taskbarlist.c b/dlls/shdocvw/taskbarlist.c
index e0e063c..4eee34f 100644
--- a/dlls/shdocvw/taskbarlist.c
+++ b/dlls/shdocvw/taskbarlist.c
@@ -130,12 +130,14 @@ static const struct ITaskbarListVtbl taskbar_list_vtbl =
 HRESULT TaskbarList_Create(IUnknown *outer, REFIID riid, void **taskbar_list)
 {
     struct taskbar_list *object;
+    HRESULT hr;
 
     TRACE("outer %p, riid %s, taskbar_list %p\n", outer, debugstr_guid(riid), taskbar_list);
 
     if (outer)
     {
         WARN("Aggregation not supported\n");
+        *taskbar_list = NULL;
         return CLASS_E_NOAGGREGATION;
     }
 
@@ -143,15 +145,21 @@ HRESULT TaskbarList_Create(IUnknown *outer, REFIID riid, void **taskbar_list)
     if (!object)
     {
         ERR("Failed to allocate taskbar list object memory\n");
+        *taskbar_list = NULL;
         return E_OUTOFMEMORY;
     }
 
     object->lpVtbl = &taskbar_list_vtbl;
-    object->refcount = 1;
-
-    *taskbar_list = object;
+    object->refcount = 0;
 
     TRACE("Created ITaskbarList %p\n", object);
 
+    hr = ITaskbarList_QueryInterface((ITaskbarList *)object, riid, taskbar_list);
+    if (FAILED(hr))
+    {
+        HeapFree(GetProcessHeap(), 0, object);
+        return hr;
+    }
+
     return S_OK;
 }




More information about the wine-cvs mailing list