Module: wine Branch: master Commit: 3697bd9acfa4a3067105af7a1b6622a5781d5320 URL: http://source.winehq.org/git/wine.git/?a=commit;h=3697bd9acfa4a3067105af7a1b...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Wed Mar 8 07:07:09 2017 +0300
xmllite/reader: Return empty string for namespace uri for some nodes.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/xmllite/reader.c | 9 +++++++++ dlls/xmllite/tests/reader.c | 23 ++++++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/dlls/xmllite/reader.c b/dlls/xmllite/reader.c index 4ea0a2a..36eba37 100644 --- a/dlls/xmllite/reader.c +++ b/dlls/xmllite/reader.c @@ -3011,6 +3011,15 @@ static HRESULT WINAPI xmlreader_GetNamespaceUri(IXmlReader* iface, const WCHAR * } } break; + case XmlNodeType_Text: + case XmlNodeType_CDATA: + case XmlNodeType_ProcessingInstruction: + case XmlNodeType_Comment: + case XmlNodeType_Whitespace: + case XmlNodeType_XmlDeclaration: + *uri = emptyW; + *len = 0; + break; default: FIXME("Unhandled node type %d\n", nodetype); return E_NOTIMPL; diff --git a/dlls/xmllite/tests/reader.c b/dlls/xmllite/tests/reader.c index 8c68610..7632d63 100644 --- a/dlls/xmllite/tests/reader.c +++ b/dlls/xmllite/tests/reader.c @@ -2116,6 +2116,18 @@ static void test_namespaceuri(void) { "defns a", "ns r", "defns a" }}, { "<a><b><c/></b></a>", { "", "", "", "", "" }}, + { "<a>text</a>", + { "", "", "" }}, + { "<a>\r\n</a>", + { "", "", "" }}, + { "<a><![CDATA[data]]></a>", + { "", "", "" }}, + { "<?xml version=\"1.0\" ?><a/>", + { "", "" }}, + { "<a><?pi ?></a>", + { "", "", "" }}, + { "<a><!-- comment --></a>", + { "", "", "" }}, }; IXmlReader *reader; XmlNodeType type; @@ -2137,13 +2149,22 @@ static void test_namespaceuri(void) const WCHAR *uri, *local; WCHAR *uriW;
- ok(type == XmlNodeType_Element || type == XmlNodeType_EndElement, "Unexpected node type %d.\n", type); + ok(type == XmlNodeType_Element || + type == XmlNodeType_Text || + type == XmlNodeType_CDATA || + type == XmlNodeType_ProcessingInstruction || + type == XmlNodeType_Comment || + type == XmlNodeType_Whitespace || + type == XmlNodeType_EndElement || + type == XmlNodeType_XmlDeclaration, "Unexpected node type %d.\n", type);
hr = IXmlReader_GetLocalName(reader, &local, NULL); ok(hr == S_OK, "S_OK, got %08x\n", hr);
+ uri = NULL; hr = IXmlReader_GetNamespaceUri(reader, &uri, NULL); ok(hr == S_OK, "S_OK, got %08x\n", hr); + ok(uri != NULL, "Unexpected NULL uri pointer\n");
uriW = a2w(uri_tests[i].uri[j]); ok(!lstrcmpW(uriW, uri), "%s: uri %s\n", wine_dbgstr_w(local), wine_dbgstr_w(uri));