Module: wine Branch: master Commit: ece36f17d06a8b3ac98ea4dfc333c0d5381b16a5 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ece36f17d06a8b3ac98ea4dfc3...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Sun Sep 29 18:55:20 2013 +0400
xmllite: Fix node type for whitespace text nodes in Content.
---
dlls/xmllite/reader.c | 5 ++++- dlls/xmllite/tests/reader.c | 4 ++++ 2 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/dlls/xmllite/reader.c b/dlls/xmllite/reader.c index 325a7a5..b181230 100644 --- a/dlls/xmllite/reader.c +++ b/dlls/xmllite/reader.c @@ -2205,7 +2205,7 @@ static HRESULT reader_parse_chardata(xmlreader *reader) ptr = start = reader_get_cur(reader); /* There's no text */ if (!*ptr || *ptr == '<') return S_OK; - reader->nodetype = XmlNodeType_Text; + reader->nodetype = is_wchar_space(*ptr) ? XmlNodeType_Whitespace : XmlNodeType_Text; reader->resume[XmlReadResume_Body] = start; reader->resumestate = XmlReadResumeState_CharData; reader_set_strvalue(reader, StringValue_LocalName, &strval_empty); @@ -2232,6 +2232,9 @@ static HRESULT reader_parse_chardata(xmlreader *reader) }
reader_skipn(reader, 1); + + /* this covers a case when text has leading whitespace chars */ + if (!is_wchar_space(*ptr)) reader->nodetype = XmlNodeType_Text; ptr++; }
diff --git a/dlls/xmllite/tests/reader.c b/dlls/xmllite/tests/reader.c index 04761cb..6296028 100644 --- a/dlls/xmllite/tests/reader.c +++ b/dlls/xmllite/tests/reader.c @@ -943,11 +943,13 @@ static const char misc_test_xml[] = " \t \r \n" "<!-- comment4 -->" "<a>" + "\r\n\t" "<b/>" "text" "<!-- comment -->" "text2" "<?pi pibody ?>" + "\r\n" "</a>" ;
@@ -961,11 +963,13 @@ static struct nodes_test misc_test = { XmlNodeType_Whitespace, XmlNodeType_Comment, XmlNodeType_Element, + XmlNodeType_Whitespace, XmlNodeType_Element, XmlNodeType_Text, XmlNodeType_Comment, XmlNodeType_Text, XmlNodeType_ProcessingInstruction, + XmlNodeType_Whitespace, XmlNodeType_EndElement, XmlNodeType_None }