[PATCH 7/7] xmllite/reader: Improve returned position for whitespace text nodes
Nikolay Sivov
nsivov at codeweavers.com
Thu Mar 9 23:56:14 CST 2017
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/xmllite/reader.c | 5 +++++
dlls/xmllite/tests/reader.c | 1 -
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/dlls/xmllite/reader.c b/dlls/xmllite/reader.c
index b223994720..b5088e83d0 100644
--- a/dlls/xmllite/reader.c
+++ b/dlls/xmllite/reader.c
@@ -2383,6 +2383,7 @@ static HRESULT reader_parse_cdata(xmlreader *reader)
/* [14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*) */
static HRESULT reader_parse_chardata(xmlreader *reader)
{
+ struct reader_position position;
WCHAR *ptr;
UINT start;
@@ -2404,6 +2405,7 @@ static HRESULT reader_parse_chardata(xmlreader *reader)
reader_set_strvalue(reader, StringValue_Value, NULL);
}
+ position = reader->position;
while (*ptr)
{
static const WCHAR ampW[] = {'&',0};
@@ -2417,6 +2419,7 @@ static HRESULT reader_parse_chardata(xmlreader *reader)
{
strval value;
+ reader->empty_element.position = position;
reader_init_strvalue(start, reader_get_cur(reader)-start, &value);
reader_set_strvalue(reader, StringValue_Value, &value);
reader->resume[XmlReadResume_Body] = 0;
@@ -3314,6 +3317,7 @@ static HRESULT WINAPI xmlreader_GetLineNumber(IXmlReader* iface, UINT *line_numb
case XmlNodeType_Attribute:
*line_number = This->attr->position.line_number;
break;
+ case XmlNodeType_Whitespace:
case XmlNodeType_XmlDeclaration:
*line_number = This->empty_element.position.line_number;
break;
@@ -3349,6 +3353,7 @@ static HRESULT WINAPI xmlreader_GetLinePosition(IXmlReader* iface, UINT *line_po
case XmlNodeType_Attribute:
*line_position = This->attr->position.line_position;
break;
+ case XmlNodeType_Whitespace:
case XmlNodeType_XmlDeclaration:
*line_position = This->empty_element.position.line_position;
break;
diff --git a/dlls/xmllite/tests/reader.c b/dlls/xmllite/tests/reader.c
index fdd2750bc6..e66b9e4240 100644
--- a/dlls/xmllite/tests/reader.c
+++ b/dlls/xmllite/tests/reader.c
@@ -2531,7 +2531,6 @@ static void test_reader_position(void)
hr = IXmlReader_Read(reader, &type);
ok(hr == S_OK, "got %08x\n", hr);
ok(type == XmlNodeType_Whitespace, "got type %d\n", type);
-todo_wine
TEST_READER_POSITION2(reader, 1, 35, 2, 6);
hr = IXmlReader_Read(reader, &type);
--
2.11.0
More information about the wine-patches
mailing list