Nikolay Sivov : xmllite/reader: Improve returned position for whitespace text nodes.
Alexandre Julliard
julliard at winehq.org
Fri Mar 10 16:51:43 CST 2017
Module: wine
Branch: master
Commit: b115e9675feed5dddb7d0ca2eba71ee837683ff5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=b115e9675feed5dddb7d0ca2eba71ee837683ff5
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Fri Mar 10 11:06:44 2017 +0300
xmllite/reader: Improve returned position for whitespace text nodes.
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
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 b223994..b5088e8 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 fdd2750..e66b9e4 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);
More information about the wine-cvs
mailing list