[PATCH 2/2] msado15: Clear interface point after release
Alistair Leslie-Hughes
leslie_alistair at hotmail.com
Thu Mar 18 00:29:42 CDT 2021
Since we clear the recordset pointer, we need to reassign it when retreiving Fields.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
---
dlls/msado15/recordset.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dlls/msado15/recordset.c b/dlls/msado15/recordset.c
index b690e243189..a86936eb037 100644
--- a/dlls/msado15/recordset.c
+++ b/dlls/msado15/recordset.c
@@ -488,6 +488,7 @@ static ULONG WINAPI fields_Release( Fields *iface )
if (!refs)
{
if (fields->recordset) _Recordset_Release( &fields->recordset->Recordset_iface );
+ fields->recordset = NULL;
WARN( "not destroying %p\n", fields );
return InterlockedIncrement( &fields->refs );
}
@@ -864,7 +865,6 @@ static void close_recordset( struct recordset *recordset )
if (!recordset->fields) return;
col_count = get_column_count( recordset );
- recordset->fields->recordset = NULL;
Fields_Release( &recordset->fields->Fields_iface );
recordset->fields = NULL;
@@ -1092,6 +1092,7 @@ static HRESULT WINAPI recordset_get_Fields( _Recordset *iface, Fields **obj )
{
/* yes, this adds a reference to the recordset instead of the fields object */
_Recordset_AddRef( &recordset->Recordset_iface );
+ recordset->fields->recordset = recordset;
*obj = &recordset->fields->Fields_iface;
return S_OK;
}
--
2.30.1
More information about the wine-devel
mailing list