Module: wine Branch: master Commit: f5f6cfb0f708c512adbc174607e0fd89b8fe503c URL: http://source.winehq.org/git/wine.git/?a=commit;h=f5f6cfb0f708c512adbc174607...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Fri Jun 3 09:55:36 2016 +0300
oledb32: IErrorInfo methods are stubs.
There's no way to set error info for this object
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
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)