[4/9] msxml3: Implement IXMLDOMNodeList::QueryInterface(IEnumVARIANT).
Nikolay Sivov
bunglehead at gmail.com
Tue Jul 5 11:23:27 CDT 2011
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.
More information about the wine-devel
mailing list