Nikolay Sivov : xmllite: Actually resume comment and PI parsing while on Misc part.
Alexandre Julliard
julliard at winehq.org
Mon Mar 11 16:24:51 CDT 2013
Module: wine
Branch: master
Commit: c38c471b644d571c038fbee6fcdd1ed1772edb81
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c38c471b644d571c038fbee6fcdd1ed1772edb81
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Sun Mar 10 15:45:38 2013 +0400
xmllite: Actually resume comment and PI parsing while on Misc part.
---
dlls/xmllite/reader.c | 15 +++++++++++++--
1 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/dlls/xmllite/reader.c b/dlls/xmllite/reader.c
index 489d346..9216127 100644
--- a/dlls/xmllite/reader.c
+++ b/dlls/xmllite/reader.c
@@ -63,6 +63,7 @@ typedef enum
XmlReadResumeState_Initial,
XmlReadResumeState_PITarget,
XmlReadResumeState_PIBody,
+ XmlReadResumeState_Comment,
XmlReadResumeState_STag
} XmlReaderResumeState;
@@ -1064,6 +1065,7 @@ static HRESULT reader_parse_comment(xmlreader *reader)
ptr = start = reader_get_cur(reader);
reader->nodetype = XmlNodeType_Comment;
reader->resume[XmlReadResume_Body] = start;
+ reader->resumestate = XmlReadResumeState_Comment;
reader_set_strvalue(reader, StringValue_LocalName, NULL);
reader_set_strvalue(reader, StringValue_QualifiedName, NULL);
reader_set_strvalue(reader, StringValue_Value, NULL);
@@ -1088,6 +1090,7 @@ static HRESULT reader_parse_comment(xmlreader *reader)
reader_set_strvalue(reader, StringValue_QualifiedName, &strval_empty);
reader_set_strvalue(reader, StringValue_Value, &value);
reader->resume[XmlReadResume_Body] = NULL;
+ reader->resumestate = XmlReadResumeState_Initial;
return S_OK;
}
else
@@ -1354,14 +1357,22 @@ static HRESULT reader_parse_misc(xmlreader *reader)
{
HRESULT hr = S_FALSE;
- if (is_reader_pending(reader))
+ if (reader->resumestate != XmlReadResumeState_Initial)
{
hr = reader_more(reader);
if (FAILED(hr)) return hr;
/* finish current node */
- if (reader->nodetype == XmlNodeType_Comment)
+ switch (reader->resumestate)
+ {
+ case XmlReadResumeState_PITarget:
+ case XmlReadResumeState_PIBody:
+ return reader_parse_pi(reader);
+ case XmlReadResumeState_Comment:
return reader_parse_comment(reader);
+ default:
+ ERR("unknown resume state %d\n", reader->resumestate);
+ }
}
while (1)
More information about the wine-cvs
mailing list