Module: wine Branch: master Commit: b115e9675feed5dddb7d0ca2eba71ee837683ff5 URL: http://source.winehq.org/git/wine.git/?a=commit;h=b115e9675feed5dddb7d0ca2eb...
Author: Nikolay Sivov nsivov@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@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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);