On 08/26/2018 07:27 PM, Daniel Lehman wrote:
static HRESULT WINAPI xmlnodemap_get_item( IXMLDOMNamedNodeMap *iface, LONG index, IXMLDOMNode** item) {
HRESULT hr;
xmlAttrPtr cur;
struct list *ptr;
nsattr_entry *nsattr; xmlnodemap *This = impl_from_IXMLDOMNamedNodeMap( iface );
TRACE("(%p)->(%d %p)\n", This, index, item);
- return This->funcs->get_item(This->node, index, item);
- hr = This->funcs->get_item(This->node, index, item);
- if (hr != S_FALSE)
return hr;
- ptr = list_head(&This->nsattrs);
- if (!ptr)
- {
if (!This->node->nsDef)
return S_FALSE;
if (This->node->nsDef)
{
hr = copy_ns_as_attrs(This);
if (FAILED(hr))
return hr;
}
ptr = list_head(&This->nsattrs);
if (!ptr)
return FALSE;
- }
- if (This->node->properties)
- {
--index;
cur = This->node->properties;
while (cur->next)
{
--index;
cur = cur->next;
}
- }
- if (index < 0)
return S_FALSE;
- while (index--)
ptr = list_next(ptr, ptr);
- nsattr = LIST_ENTRY(ptr, nsattr_entry, entry);
- cur = nsattr->attr;
- *item = create_node((xmlNodePtr) cur);
- return S_OK; }
This only applies to elements, so such fixup should happen there, not in generic nodemap method.