[PATCH 0/2] MR9543: msado15: Don't use row index in _Recordset::get_EditMode.
From: Piotr Caban <piotr(a)codeweavers.com> --- dlls/msado15/rowset.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dlls/msado15/rowset.c b/dlls/msado15/rowset.c index d11cbd5c28a..6f38d38f212 100644 --- a/dlls/msado15/rowset.c +++ b/dlls/msado15/rowset.c @@ -145,10 +145,16 @@ static ULONG WINAPI rowset_Release(IRowsetExactScroll *iface) if (!refs) { + int i; + TRACE("destroying %p\n", rowset); if (rowset->convert) IDataConvert_Release(rowset->convert); + for (i = 0; i < rowset->data_cnt; i++) + VariantClear(rowset->data + i); + free(rowset->data); + CoTaskMemFree(rowset->columns); CoTaskMemFree(rowset->columns_buf); free(rowset); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9543
From: Piotr Caban <piotr(a)codeweavers.com> --- dlls/msado15/recordset.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/dlls/msado15/recordset.c b/dlls/msado15/recordset.c index 4aa72c039d0..5a2b68a827d 100644 --- a/dlls/msado15/recordset.c +++ b/dlls/msado15/recordset.c @@ -2762,7 +2762,13 @@ static HRESULT WINAPI recordset_get_EditMode( _Recordset *iface, EditModeEnum *m TRACE( "%p, %p\n", iface, mode ); if (recordset->state == adStateClosed) return MAKE_ADO_HRESULT( adErrObjectClosed ); - if (recordset->index < 0) return MAKE_ADO_HRESULT( adErrNoCurrentRecord ); + + if (!recordset->current_row && !recordset->is_eof && !recordset->is_bof) + { + HRESULT hr = cache_get( recordset, TRUE ); + if (FAILED(hr)) return hr; + } + if (!recordset->current_row) return MAKE_ADO_HRESULT( adErrNoCurrentRecord ); *mode = recordset->editmode; return S_OK; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9543
participants (2)
-
Piotr Caban -
Piotr Caban (@piotr)