From 959814a3bdb8bb7337840e7cb93cea9f2fbd00fc Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Tue, 17 Jul 2012 11:22:59 +0400 Subject: [PATCH] ole32: Fix QueryInterface for IErrorInfo to return IUnknown pointer. --- dlls/ole32/errorinfo.c | 2 +- dlls/ole32/tests/errorinfo.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/dlls/ole32/errorinfo.c b/dlls/ole32/errorinfo.c index 6a499fc3287..055d6a5404a 100644 --- a/dlls/ole32/errorinfo.c +++ b/dlls/ole32/errorinfo.c @@ -160,7 +160,7 @@ static HRESULT WINAPI IErrorInfoImpl_QueryInterface( *ppvoid = NULL; - if(IsEqualIID(riid, &IID_IErrorInfo)) + if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IErrorInfo)) { *ppvoid = &This->IErrorInfo_iface; } diff --git a/dlls/ole32/tests/errorinfo.c b/dlls/ole32/tests/errorinfo.c index f55d480ef20..bb350aea73d 100644 --- a/dlls/ole32/tests/errorinfo.c +++ b/dlls/ole32/tests/errorinfo.c @@ -47,10 +47,15 @@ static void test_error_info(void) static WCHAR wszDescription[] = {'F','a','i','l','e','d',' ','S','p','r','o','c','k','e','t',0}; static WCHAR wszHelpFile[] = {'s','p','r','o','c','k','e','t','.','h','l','p',0}; static WCHAR wszSource[] = {'s','p','r','o','c','k','e','t',0}; + IUnknown *unk; hr = CreateErrorInfo(&pCreateErrorInfo); ok_ole_success(hr, "CreateErrorInfo"); + hr = ICreateErrorInfo_QueryInterface(pCreateErrorInfo, &IID_IUnknown, (void**)&unk); + ok_ole_success(hr, "QI"); + IUnknown_Release(unk); + hr = ICreateErrorInfo_SetDescription(pCreateErrorInfo, NULL); ok_ole_success(hr, "ICreateErrorInfo_SetDescription"); @@ -78,6 +83,10 @@ static void test_error_info(void) hr = ICreateErrorInfo_QueryInterface(pCreateErrorInfo, &IID_IErrorInfo, (void **)&pErrorInfo); ok_ole_success(hr, "ICreateErrorInfo_QueryInterface"); + hr = IErrorInfo_QueryInterface(pErrorInfo, &IID_IUnknown, (void**)&unk); + ok_ole_success(hr, "QI"); + IUnknown_Release(unk); + ICreateErrorInfo_Release(pCreateErrorInfo); hr = SetErrorInfo(0, pErrorInfo); -- 2.11.4.GIT