[PATCH] oledb32: IErrorInfo methods are stubs

Nikolay Sivov nsivov at codeweavers.com
Fri Jun 3 01:55:36 CDT 2016


There's no way to set error info for this object

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/oledb32/errorinfo.c      |  62 ++++++++-----------
 dlls/oledb32/tests/database.c | 134 +++++++++++++++++++++++++++---------------
 2 files changed, 110 insertions(+), 86 deletions(-)

diff --git a/dlls/oledb32/errorinfo.c b/dlls/oledb32/errorinfo.c
index 4a2a1e2..4a56b46 100644
--- a/dlls/oledb32/errorinfo.c
+++ b/dlls/oledb32/errorinfo.c
@@ -53,12 +53,6 @@ typedef struct ErrorInfoImpl
     IErrorRecords  IErrorRecords_iface;
     LONG ref;
 
-    GUID m_Guid;
-    BSTR source;
-    BSTR description;
-    BSTR help_file;
-    DWORD help_context;
-
     struct list errors;
 } ErrorInfoImpl;
 
@@ -115,10 +109,6 @@ static ULONG WINAPI IErrorInfoImpl_Release(IErrorInfo* iface)
 
     if (!ref)
     {
-        SysFreeString(This->source);
-        SysFreeString(This->description);
-        SysFreeString(This->help_file);
-
         LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, &This->errors, struct ErrorEntry, entry)
         {
             list_remove(&cursor->entry);
@@ -132,74 +122,74 @@ static ULONG WINAPI IErrorInfoImpl_Release(IErrorInfo* iface)
     return ref;
 }
 
-static HRESULT WINAPI IErrorInfoImpl_GetGUID(IErrorInfo* iface, GUID * pGUID)
+static HRESULT WINAPI IErrorInfoImpl_GetGUID(IErrorInfo* iface, GUID *guid)
 {
     ErrorInfoImpl *This = impl_from_IErrorInfo(iface);
 
-    TRACE("(%p)\n",This);
+    TRACE("(%p)->(%p)\n", This, guid);
 
-    if(!pGUID )
+    if (!guid)
         return E_INVALIDARG;
 
-    *pGUID = This->m_Guid;
+    *guid = GUID_NULL;
 
     return S_OK;
 }
 
-static HRESULT WINAPI IErrorInfoImpl_GetSource(IErrorInfo* iface, BSTR *pBstrSource)
+static HRESULT WINAPI IErrorInfoImpl_GetSource(IErrorInfo* iface, BSTR *source)
 {
     ErrorInfoImpl *This = impl_from_IErrorInfo(iface);
 
-    TRACE("(%p)->(%p)\n",This, pBstrSource);
+    TRACE("(%p)->(%p)\n", This, source);
 
-    if (pBstrSource == NULL)
+    if (!source)
         return E_INVALIDARG;
 
-    *pBstrSource = SysAllocString(This->source);
+    *source = NULL;
 
-    return S_OK;
+    return E_FAIL;
 }
 
-static HRESULT WINAPI IErrorInfoImpl_GetDescription(IErrorInfo* iface, BSTR *pBstrDescription)
+static HRESULT WINAPI IErrorInfoImpl_GetDescription(IErrorInfo* iface, BSTR *description)
 {
     ErrorInfoImpl *This = impl_from_IErrorInfo(iface);
 
-    TRACE("(%p)->(%p)\n",This, pBstrDescription);
+    TRACE("(%p)->(%p)\n", This, description);
 
-    if (pBstrDescription == NULL)
+    if (!description)
         return E_INVALIDARG;
 
-    *pBstrDescription = SysAllocString(This->description);
+    *description = NULL;
 
-    return S_OK;
+    return E_FAIL;
 }
 
-static HRESULT WINAPI IErrorInfoImpl_GetHelpFile(IErrorInfo* iface, BSTR *pBstrHelpFile)
+static HRESULT WINAPI IErrorInfoImpl_GetHelpFile(IErrorInfo* iface, BSTR *helpfile)
 {
     ErrorInfoImpl *This = impl_from_IErrorInfo(iface);
 
-    TRACE("(%p)->(%p)\n",This, pBstrHelpFile);
+    TRACE("(%p)->(%p)\n", This, helpfile);
 
-    if (pBstrHelpFile == NULL)
+    if (!helpfile)
         return E_INVALIDARG;
 
-    *pBstrHelpFile = SysAllocString(This->help_file);
+    *helpfile = NULL;
 
-    return S_OK;
+    return E_FAIL;
 }
 
-static HRESULT WINAPI IErrorInfoImpl_GetHelpContext(IErrorInfo* iface, DWORD *pdwHelpContext)
+static HRESULT WINAPI IErrorInfoImpl_GetHelpContext(IErrorInfo* iface, DWORD *context)
 {
     ErrorInfoImpl *This = impl_from_IErrorInfo(iface);
 
-    TRACE("(%p)->(%p)\n",This, pdwHelpContext);
+    TRACE("(%p)->(%p)\n", This, context);
 
-    if (pdwHelpContext == NULL)
+    if (!context)
         return E_INVALIDARG;
 
-    *pdwHelpContext = This->help_context;
+    *context = 0;
 
-    return S_OK;
+    return E_FAIL;
 }
 
 static const IErrorInfoVtbl ErrorInfoVtbl =
@@ -371,10 +361,6 @@ HRESULT create_error_info(IUnknown *outer, void **obj)
     This->IErrorInfo_iface.lpVtbl = &ErrorInfoVtbl;
     This->IErrorRecords_iface.lpVtbl = &ErrorRecordsVtbl;
     This->ref = 1;
-    This->source = NULL;
-    This->description = NULL;
-    This->help_file = NULL;
-    This->help_context = 0;
 
     list_init(&This->errors);
 
diff --git a/dlls/oledb32/tests/database.c b/dlls/oledb32/tests/database.c
index fdf4220..442e57e 100644
--- a/dlls/oledb32/tests/database.c
+++ b/dlls/oledb32/tests/database.c
@@ -312,71 +312,109 @@ static void test_database(void)
 
 static void test_errorinfo(void)
 {
-    HRESULT hr;
+    ICreateErrorInfo *createerror;
+    ERRORINFO info, info2, info3;
+    IErrorInfo *errorinfo;
+    IErrorRecords *errrecs;
     IUnknown *unk = NULL;
+    DWORD context;
+    ULONG cnt = 0;
+    HRESULT hr;
+    GUID guid;
+    BSTR str;
 
-    hr = CoCreateInstance(&CSLID_MSDAER, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown,(void**)&unk);
+    hr = CoCreateInstance(&CSLID_MSDAER, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)&unk);
     ok(hr == S_OK, "got %08x\n", hr);
-    if(hr == S_OK)
-    {
-        IErrorInfo *errorinfo;
-        IErrorRecords *errrecs;
 
-        hr = IUnknown_QueryInterface(unk, &IID_IErrorInfo, (void**)&errorinfo);
-        ok(hr == S_OK, "got %08x\n", hr);
-        if(hr == S_OK)
-        {
-            IErrorInfo_Release(errorinfo);
-        }
+    hr = IUnknown_QueryInterface(unk, &IID_IErrorInfo, (void**)&errorinfo);
+    ok(hr == S_OK, "got %08x\n", hr);
 
-        hr = IUnknown_QueryInterface(unk, &IID_IErrorRecords, (void**)&errrecs);
-        ok(hr == S_OK, "got %08x\n", hr);
-        if(hr == S_OK)
-        {
-            ERRORINFO info, info2, info3;
-            ULONG cnt = 0;
+    hr = IErrorInfo_GetGUID(errorinfo, NULL);
+    ok(hr == E_INVALIDARG, "got %08x\n", hr);
 
-            memset(&info, 0, sizeof(ERRORINFO));
-            info.dwMinor = 1;
-            memset(&info2, 0, sizeof(ERRORINFO));
-            info2.dwMinor = 2;
-            memset(&info3, 0, sizeof(ERRORINFO));
+    hr = IErrorInfo_GetSource(errorinfo, NULL);
+    ok(hr == E_INVALIDARG, "got %08x\n", hr);
 
-            hr = IErrorRecords_AddErrorRecord(errrecs, NULL, 268435456, NULL, NULL, 0);
-            ok(hr == E_INVALIDARG, "got %08x\n", hr);
+    hr = IErrorInfo_GetDescription(errorinfo, NULL);
+    ok(hr == E_INVALIDARG, "got %08x\n", hr);
 
-            hr = IErrorRecords_AddErrorRecord(errrecs, &info, 1, NULL, NULL, 0);
-            ok(hr == S_OK, "got %08x\n", hr);
+    hr = IErrorInfo_GetHelpFile(errorinfo, NULL);
+    ok(hr == E_INVALIDARG, "got %08x\n", hr);
 
-            hr = IErrorRecords_GetRecordCount(errrecs, &cnt);
-            ok(hr == S_OK, "got %08x\n", hr);
-            ok(cnt == 1, "expected 1 got %d\n", cnt);
+    hr = IErrorInfo_GetHelpContext(errorinfo, NULL);
+    ok(hr == E_INVALIDARG, "got %08x\n", hr);
 
-            hr = IErrorRecords_AddErrorRecord(errrecs, &info2, 2, NULL, NULL, 0);
-            ok(hr == S_OK, "got %08x\n", hr);
+    memset(&guid, 0xac, sizeof(guid));
+    hr = IErrorInfo_GetGUID(errorinfo, &guid);
+    ok(hr == S_OK, "got %08x\n", hr);
+    ok(IsEqualGUID(&guid, &GUID_NULL), "got wrong guid\n");
 
-            hr = IErrorRecords_GetRecordCount(errrecs, &cnt);
-            ok(hr == S_OK, "got %08x\n", hr);
-            ok(cnt == 2, "expected 2 got %d\n", cnt);
+    str = (BSTR)0x1;
+    hr = IErrorInfo_GetSource(errorinfo, &str);
+    ok(hr == E_FAIL, "got %08x\n", hr);
+    ok(str == NULL, "got %s\n", wine_dbgstr_w(str));
 
-            hr = IErrorRecords_GetBasicErrorInfo(errrecs, 0, NULL);
-            ok(hr == E_INVALIDARG, "got %08x\n", hr);
+    str = (BSTR)0x1;
+    hr = IErrorInfo_GetDescription(errorinfo, &str);
+    ok(hr == E_FAIL, "got %08x\n", hr);
+    ok(str == NULL, "got %s\n", wine_dbgstr_w(str));
 
-            hr = IErrorRecords_GetBasicErrorInfo(errrecs, 100, &info3);
-            ok(hr == DB_E_BADRECORDNUM, "got %08x\n", hr);
+    str = (BSTR)0x1;
+    hr = IErrorInfo_GetHelpFile(errorinfo, &str);
+    ok(hr == E_FAIL, "got %08x\n", hr);
+    ok(str == NULL, "got %s\n", wine_dbgstr_w(str));
 
-            hr = IErrorRecords_GetBasicErrorInfo(errrecs, 0, &info3);
-            todo_wine ok(hr == S_OK, "got %08x\n", hr);
-            if(hr == S_OK)
-            {
-                ok(info3.dwMinor == 2, "expected 2 got %d\n", info3.dwMinor);
-            }
+    context = 1;
+    hr = IErrorInfo_GetHelpContext(errorinfo, &context);
+    ok(hr == E_FAIL, "got %08x\n", hr);
+    ok(context == 0, "got %d\n", context);
 
-            IErrorRecords_Release(errrecs);
-        }
+    IErrorInfo_Release(errorinfo);
+
+    hr = IErrorInfo_QueryInterface(errorinfo, &IID_ICreateErrorInfo, (void**)&createerror);
+    ok(hr == E_NOINTERFACE, "got %08x\n", hr);
+
+    hr = IUnknown_QueryInterface(unk, &IID_IErrorRecords, (void**)&errrecs);
+    ok(hr == S_OK, "got %08x\n", hr);
+
+    memset(&info, 0, sizeof(ERRORINFO));
+    info.dwMinor = 1;
+    memset(&info2, 0, sizeof(ERRORINFO));
+    info2.dwMinor = 2;
+    memset(&info3, 0, sizeof(ERRORINFO));
+
+    hr = IErrorRecords_AddErrorRecord(errrecs, NULL, 268435456, NULL, NULL, 0);
+    ok(hr == E_INVALIDARG, "got %08x\n", hr);
+
+    hr = IErrorRecords_AddErrorRecord(errrecs, &info, 1, NULL, NULL, 0);
+    ok(hr == S_OK, "got %08x\n", hr);
+
+    hr = IErrorRecords_GetRecordCount(errrecs, &cnt);
+    ok(hr == S_OK, "got %08x\n", hr);
+    ok(cnt == 1, "expected 1 got %d\n", cnt);
 
-        IUnknown_Release(unk);
+    hr = IErrorRecords_AddErrorRecord(errrecs, &info2, 2, NULL, NULL, 0);
+    ok(hr == S_OK, "got %08x\n", hr);
+
+    hr = IErrorRecords_GetRecordCount(errrecs, &cnt);
+    ok(hr == S_OK, "got %08x\n", hr);
+    ok(cnt == 2, "expected 2 got %d\n", cnt);
+
+    hr = IErrorRecords_GetBasicErrorInfo(errrecs, 0, NULL);
+    ok(hr == E_INVALIDARG, "got %08x\n", hr);
+
+    hr = IErrorRecords_GetBasicErrorInfo(errrecs, 100, &info3);
+    ok(hr == DB_E_BADRECORDNUM, "got %08x\n", hr);
+
+    hr = IErrorRecords_GetBasicErrorInfo(errrecs, 0, &info3);
+    todo_wine ok(hr == S_OK, "got %08x\n", hr);
+    if(hr == S_OK)
+    {
+        ok(info3.dwMinor == 2, "expected 2 got %d\n", info3.dwMinor);
     }
+
+    IErrorRecords_Release(errrecs);
+    IUnknown_Release(unk);
 }
 
 static void test_initializationstring(void)
-- 
2.8.1




More information about the wine-patches mailing list