shdocvw: Take the riid parameter to TaskbarList_Create() into account.
Henri Verbeet
hverbeet at codeweavers.com
Tue Jun 16 02:38:25 CDT 2009
---
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;
}
--
1.6.0.6
--------------070808020006090208080403--
More information about the wine-patches
mailing list