Module: wine Branch: master Commit: 697e529c195ca3cea1dd4dc64e1b2897a219324a URL: http://source.winehq.org/git/wine.git/?a=commit;h=697e529c195ca3cea1dd4dc64e...
Author: Henri Verbeet hverbeet@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; }