From: Piotr Caban piotr@codeweavers.com
--- dlls/msado15/recordset.c | 3 +++ dlls/msado15/tests/msado15.c | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/dlls/msado15/recordset.c b/dlls/msado15/recordset.c index 6454b032b26..704ffcac954 100644 --- a/dlls/msado15/recordset.c +++ b/dlls/msado15/recordset.c @@ -2744,6 +2744,9 @@ static HRESULT WINAPI rsconstruction_put_Rowset(ADORecordsetConstruction *iface, if ( recordset->row_set ) IRowset_Release( recordset->row_set ); recordset->row_set = rowset;
+ if ( recordset->fields && !get_column_count(recordset) ) + map_rowset_fields(recordset, recordset->fields); + return S_OK; }
diff --git a/dlls/msado15/tests/msado15.c b/dlls/msado15/tests/msado15.c index 66dd69a144e..45d6652b346 100644 --- a/dlls/msado15/tests/msado15.c +++ b/dlls/msado15/tests/msado15.c @@ -720,6 +720,10 @@ static void test_ADORecordsetConstruction(void) goto done; }
+ hr = _Recordset_get_Fields( recordset, &fields ); + ok( hr == S_OK, "got %08lx\n", hr ); + ok( fields != NULL, "NULL value\n"); + testrowset.IRowset_iface.lpVtbl = &rowset_vtbl; testrowset.IRowsetInfo_iface.lpVtbl = &rowset_info; testrowset.IColumnsInfo_iface.lpVtbl = &column_info; @@ -735,10 +739,6 @@ static void test_ADORecordsetConstruction(void) ref = get_refcount( rowset ); ok( ref == 2, "got %ld\n", ref );
- hr = _Recordset_get_Fields( recordset, &fields ); - ok( hr == S_OK, "got %08lx\n", hr ); - ok( fields != NULL, "NULL value\n"); - ref = get_refcount( rowset ); ok( ref == 2, "got %ld\n", ref );