From: Nikolay Sivov Subject: [2/2] xmllite: Fix node type for whitespace text nodes in Content Message-Id: <5249057A.5030606@codeweavers.com> Date: Mon, 30 Sep 2013 09:00:42 +0400 Fix node type for whitespace text nodes in Content From ba402d7d4efa59121897ba5548c0bdb9f844e457 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Sun, 29 Sep 2013 18:55:20 +0400 Subject: [PATCH 6/6] 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 deletion(-) 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" "" "" + "\r\n\t" "" "text" "" "text2" "" + "\r\n" "" ; @@ -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 } -- 1.7.10.4