Nikolay Sivov : ole32: Fix QueryInterface for IErrorInfo to return IUnknown pointer.

Alexandre Julliard julliard at winehq.org
Tue Jul 17 11:05:34 CDT 2012


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

Author: Nikolay Sivov <nsivov at 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);




More information about the wine-cvs mailing list