[4/9] msxml3: Implement IXMLDOMNodeList::QueryInterface(IEnumVARIANT).
Adam Martinson
amartinson at codeweavers.com
Tue Jul 5 13:13:48 CDT 2011
On 07/05/2011 11:23 AM, Nikolay Sivov wrote:
> On Tue, Jul 5, 2011 at 8:11 PM, Adam Martinson
> <amartinson at codeweavers.com> wrote:
>> ---
>> dlls/msxml3/nodelist.c | 33 ++++++++++++++++++++++++++++++++-
>> dlls/msxml3/selection.c | 34 ++++++++++++++++++++++++++++++++--
>> 2 files changed, 64 insertions(+), 3 deletions(-)
>>
>>
> + else if ( IsEqualGUID( riid,&IID_IEnumVARIANT ) )
> + {
> + if (!This->enumv&&
> + (This->enumv = create_nodelist_enum(&This->IXMLDOMNodeList_iface)))
> + IXMLDOMNodeList_Release(iface); /*
> create_nodelist_enum() adds a ref, and we don't here. */
> +
> + if (!This->enumv)
> + {
> + *ppvObject = NULL;
> + return E_OUTOFMEMORY;
> + }
> +
> + IEnumVARIANT_AddRef(This->enumv);
> + *ppvObject = This->enumv;
> + return S_OK;
> + }
>
> Shouldn't this->enumv be protected somehow to work with multiple
> threads? I know that so called FreeThreaded* thing is only reported to
> be supported, but still. Maybe something like pointer exchange call
> will work.
I like that idea, thanks!
More information about the wine-devel
mailing list