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.