From: Alistair Leslie-Hughes Subject: Re: [PATCH 3/3] msado15: Implement ADORecordsetConstruction get/put Rowset Message-Id: Date: Sat, 31 Oct 2020 18:43:59 +1100 In-Reply-To: <934c8b2d1a46374094f4dce5be86a91b4cf44208.camel@codeweavers.com> References: <20201030075058.4739-1-leslie_alistair@hotmail.com> <934c8b2d1a46374094f4dce5be86a91b4cf44208.camel@codeweavers.com> On 30/10/20 8:09 pm, Hans Leidekker wrote: > On Fri, 2020-10-30 at 18:50 +1100, Alistair Leslie-Hughes wrote: >> static HRESULT WINAPI rsconstruction_put_Rowset(ADORecordsetConstruction *iface, IUnknown *row_set) >> { >> struct recordset *recordset = impl_from_ADORecordsetConstruction( iface ); >> - FIXME("%p, %p\n", recordset, row_set); >> - return E_NOTIMPL; >> + >> + TRACE("%p, %p\n", recordset, row_set); >> + >> + if (recordset->row_set) IUnknown_Release(recordset->row_set); >> + recordset->row_set = row_set; >> + if (recordset->row_set) IUnknown_AddRef(recordset->row_set); >> + >> + return S_OK; >> } > > This is supposed to turn the row_set into a Recordset object but > you only store a reference. This could use some tests around > the interaction between these objects. > Based off this one, it appears the pointer is stored. How that point is used internally is another issue. I suspect that when set, the rowset point is used to get/set data. https://docs.microsoft.com/en-us/archive/msdn-magazine/2000/july/house-of-com-using-ado-to-create-xml-based-recordsets I'll attempt to add tests to illustrate how the objects relate. Regards Alistair.