From: Piotr Caban <piotr(a)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 ); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9292