Module: wine Branch: master Commit: 149c392e099fd1cdad5afe48b7897d898f1adf2a URL: http://source.winehq.org/git/wine.git/?a=commit;h=149c392e099fd1cdad5afe48b7...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Fri Aug 23 10:33:35 2013 +0400
oledb32: Implement IRowPosition_GetRowset().
---
dlls/oledb32/rowpos.c | 7 +++++-- dlls/oledb32/tests/database.c | 7 +++++++ 2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/dlls/oledb32/rowpos.c b/dlls/oledb32/rowpos.c index a6c68b8..cca3192 100644 --- a/dlls/oledb32/rowpos.c +++ b/dlls/oledb32/rowpos.c @@ -168,8 +168,11 @@ static HRESULT WINAPI rowpos_GetRowPosition(IRowPosition *iface, HCHAPTER *chapt static HRESULT WINAPI rowpos_GetRowset(IRowPosition *iface, REFIID riid, IUnknown **rowset) { rowpos *This = impl_from_IRowPosition(iface); - FIXME("(%p)->(%s %p): stub\n", This, debugstr_guid(riid), rowset); - return E_NOTIMPL; + + TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), rowset); + + if (!This->rowset) return E_UNEXPECTED; + return IRowset_QueryInterface(This->rowset, riid, (void**)rowset); }
static HRESULT WINAPI rowpos_Initialize(IRowPosition *iface, IUnknown *rowset) diff --git a/dlls/oledb32/tests/database.c b/dlls/oledb32/tests/database.c index f42f189..ac809ef 100644 --- a/dlls/oledb32/tests/database.c +++ b/dlls/oledb32/tests/database.c @@ -472,6 +472,7 @@ static void init_onchange_sink(IRowPosition *rowpos) static void test_rowpos_clearrowposition(void) { IRowPosition *rowpos; + IUnknown *unk; HRESULT hr;
hr = CoCreateInstance(&CLSID_OLEDB_ROWPOSITIONLIBRARY, NULL, CLSCTX_INPROC_SERVER, &IID_IRowPosition, (void**)&rowpos); @@ -480,10 +481,16 @@ static void test_rowpos_clearrowposition(void) hr = IRowPosition_ClearRowPosition(rowpos); ok(hr == E_UNEXPECTED, "got %08x\n", hr);
+ hr = IRowPosition_GetRowset(rowpos, &IID_IStream, &unk); + ok(hr == E_UNEXPECTED, "got %08x\n", hr); + init_test_rset(); hr = IRowPosition_Initialize(rowpos, (IUnknown*)&test_rset.IRowset_iface); ok(hr == S_OK, "got %08x\n", hr);
+ hr = IRowPosition_GetRowset(rowpos, &IID_IRowset, &unk); + ok(hr == S_OK, "got %08x\n", hr); + init_onchange_sink(rowpos); hr = IRowPosition_ClearRowPosition(rowpos); ok(hr == S_OK, "got %08x\n", hr);