[PATCH 2/3] xmllite: Qualified and Local names match for DTD.
Jeff Smith
whydoubt at gmail.com
Sun Oct 27 23:58:52 CDT 2019
---
dlls/xmllite/reader.c | 3 +--
dlls/xmllite/tests/reader.c | 35 ++++++++++-------------------------
2 files changed, 11 insertions(+), 27 deletions(-)
diff --git a/dlls/xmllite/reader.c b/dlls/xmllite/reader.c
index 02097d0789..66870d63ec 100644
--- a/dlls/xmllite/reader.c
+++ b/dlls/xmllite/reader.c
@@ -1919,7 +1919,6 @@ static HRESULT reader_parse_dtd(xmlreader *reader)
reader->nodetype = XmlNodeType_DocumentType;
reader_set_strvalue(reader, StringValue_LocalName, &name);
- reader_set_strvalue(reader, StringValue_QualifiedName, &name);
return S_OK;
}
@@ -3114,7 +3113,6 @@ static HRESULT WINAPI xmlreader_MoveToElement(IXmlReader* iface)
This->attr = NULL;
- /* 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_QualifiedName, &This->empty_element.qname);
@@ -3184,6 +3182,7 @@ static HRESULT WINAPI xmlreader_GetQualifiedName(IXmlReader* iface, LPCWSTR *nam
}
break;
case XmlNodeType_XmlDeclaration:
+ case XmlNodeType_DocumentType:
*name = This->strvalues[StringValue_LocalName].str;
*len = This->strvalues[StringValue_LocalName].len;
break;
diff --git a/dlls/xmllite/tests/reader.c b/dlls/xmllite/tests/reader.c
index 64ae6191a6..e38f1e5f37 100644
--- a/dlls/xmllite/tests/reader.c
+++ b/dlls/xmllite/tests/reader.c
@@ -1270,11 +1270,10 @@ static const char test_public_dtd[] =
static void test_read_public_dtd(void)
{
- static const WCHAR dtdnameW[] = {'t','e','s','t','d','t','d',0};
IXmlReader *reader;
- const WCHAR *str;
+ const WCHAR *name, *qname;
XmlNodeType type;
- UINT len, count;
+ UINT count;
HRESULT hr;
hr = CreateXmlReader(&IID_IXmlReader, (void**)&reader, NULL);
@@ -1314,16 +1313,10 @@ static void test_read_public_dtd(void)
reader_value(reader, "externalid uri");
move_to_element(reader);
- reader_name(reader, "testdtd");
+ name = reader_name(reader, "testdtd");
+ qname = reader_qname(reader, "testdtd");
+ ok(name == qname, "name != qname\n");
- len = 0;
- str = NULL;
- hr = IXmlReader_GetQualifiedName(reader, &str, &len);
- ok(hr == S_OK, "got 0x%08x\n", hr);
-todo_wine {
- ok(len == lstrlenW(dtdnameW), "got %u\n", len);
- ok(!lstrcmpW(str, dtdnameW), "got %s\n", wine_dbgstr_w(str));
-}
IXmlReader_Release(reader);
}
@@ -1333,11 +1326,10 @@ static const char test_system_dtd[] =
static void test_read_system_dtd(void)
{
- static const WCHAR dtdnameW[] = {'t','e','s','t','d','t','d',0};
IXmlReader *reader;
- const WCHAR *str;
+ const WCHAR *name, *qname;
XmlNodeType type;
- UINT len, count;
+ UINT count;
HRESULT hr;
hr = CreateXmlReader(&IID_IXmlReader, (void**)&reader, NULL);
@@ -1367,16 +1359,9 @@ static void test_read_system_dtd(void)
reader_value(reader, "externalid uri");
move_to_element(reader);
- reader_name(reader, "testdtd");
-
- len = 0;
- str = NULL;
- hr = IXmlReader_GetQualifiedName(reader, &str, &len);
- ok(hr == S_OK, "got 0x%08x\n", hr);
-todo_wine {
- ok(len == lstrlenW(dtdnameW), "got %u\n", len);
- ok(!lstrcmpW(str, dtdnameW), "got %s\n", wine_dbgstr_w(str));
-}
+ name = reader_name(reader, "testdtd");
+ qname = reader_qname(reader, "testdtd");
+ ok(name == qname, "name != qname\n");
read_node(reader, XmlNodeType_Comment);
--
2.21.0
More information about the wine-devel
mailing list