Nikolay Sivov : xmllite: Fix node type for whitespace text nodes in Content .

Alexandre Julliard julliard at winehq.org
Mon Sep 30 16:07:55 CDT 2013


Module: wine
Branch: master
Commit: ece36f17d06a8b3ac98ea4dfc333c0d5381b16a5
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=ece36f17d06a8b3ac98ea4dfc333c0d5381b16a5

Author: Nikolay Sivov <nsivov at 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
     }




More information about the wine-cvs mailing list