[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