Module: wine Branch: master Commit: 3fe5f25b17525f7bb43c37b1746260f3d80f62ef URL: http://source.winehq.org/git/wine.git/?a=commit;h=3fe5f25b17525f7bb43c37b174...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Tue Mar 7 06:50:57 2017 +0300
xmllite/reader: Fix prefix returned after moving back to element.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/xmllite/reader.c | 2 ++ dlls/xmllite/tests/reader.c | 11 +++++++++++ 2 files changed, 13 insertions(+)
diff --git a/dlls/xmllite/reader.c b/dlls/xmllite/reader.c index 84f38d5..7aaaebf 100644 --- a/dlls/xmllite/reader.c +++ b/dlls/xmllite/reader.c @@ -2890,12 +2890,14 @@ static HRESULT WINAPI xmlreader_MoveToElement(IXmlReader* iface)
/* FIXME: support other node types with 'attributes' like DTD */ if (This->is_empty_element) { + reader_set_strvalue(This, StringValue_Prefix, &This->empty_element.prefix); reader_set_strvalue(This, StringValue_LocalName, &This->empty_element.localname); reader_set_strvalue(This, StringValue_QualifiedName, &This->empty_element.qname); } else { struct element *element = LIST_ENTRY(list_head(&This->elements), struct element, entry); if (element) { + reader_set_strvalue(This, StringValue_Prefix, &element->prefix); reader_set_strvalue(This, StringValue_LocalName, &element->localname); reader_set_strvalue(This, StringValue_QualifiedName, &element->qname); } diff --git a/dlls/xmllite/tests/reader.c b/dlls/xmllite/tests/reader.c index 84316e4..8a736bf 100644 --- a/dlls/xmllite/tests/reader.c +++ b/dlls/xmllite/tests/reader.c @@ -2034,6 +2034,17 @@ static void test_prefix(void) wine_dbgstr_w(expected)); free_str(expected);
+ /* back to the element, check prefix */ + hr = IXmlReader_MoveToElement(reader); + ok(hr == S_OK, "MoveToElement() failed, %#x.\n", hr); + + expected = a2w(prefix_tests[i].prefix1); + hr = IXmlReader_GetPrefix(reader, &prefix, NULL); + ok(hr == S_OK, "GetPrefix() failed, %#x.\n", hr); + ok(!lstrcmpW(prefix, expected), "Unexpected prefix %s, expected %s.\n", wine_dbgstr_w(prefix), + wine_dbgstr_w(expected)); + free_str(expected); + IStream_Release(stream); }