Module: wine Branch: master Commit: 959814a3bdb8bb7337840e7cb93cea9f2fbd00fc URL: http://source.winehq.org/git/wine.git/?a=commit;h=959814a3bdb8bb7337840e7cb9... Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Tue Jul 17 11:22:59 2012 +0400 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 deletions(-) diff --git a/dlls/ole32/errorinfo.c b/dlls/ole32/errorinfo.c index 6a499fc..055d6a5 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 f55d480..bb350ae 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);