From: Piotr Caban piotr@codeweavers.com
--- dlls/msado15/recordset.c | 3 +++ dlls/msado15/tests/msado15.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/dlls/msado15/recordset.c b/dlls/msado15/recordset.c index bb1102b1be7..10e2eb47740 100644 --- a/dlls/msado15/recordset.c +++ b/dlls/msado15/recordset.c @@ -2811,6 +2811,8 @@ static HRESULT WINAPI rsconstruction_put_Rowset(ADORecordsetConstruction *iface,
TRACE( "%p, %p\n", recordset, unk );
+ if (recordset->state == adStateOpen) return MAKE_ADO_HRESULT( adErrObjectOpen ); + hr = IUnknown_QueryInterface(unk, &IID_IRowset, (void**)&rowset); if ( FAILED(hr) ) return E_FAIL;
@@ -2820,6 +2822,7 @@ static HRESULT WINAPI rsconstruction_put_Rowset(ADORecordsetConstruction *iface, if ( !get_column_count(recordset) ) map_rowset_fields(recordset, &recordset->fields);
+ recordset->state = adStateOpen; return S_OK; }
diff --git a/dlls/msado15/tests/msado15.c b/dlls/msado15/tests/msado15.c index 893742e75df..d81ab7da6cf 100644 --- a/dlls/msado15/tests/msado15.c +++ b/dlls/msado15/tests/msado15.c @@ -906,7 +906,7 @@ static void test_ADORecordsetConstruction(BOOL exact_scroll)
hr = _Recordset_get_State( recordset, &state ); ok( hr == S_OK, "got %08lx\n", hr ); - todo_wine ok( state == adStateOpen, "state = %ld\n", state ); + ok( state == adStateOpen, "state = %ld\n", state );
count = -1; SET_EXPECT( rowset_QI_IColumnsInfo );