aboutsummaryrefslogtreecommitdiffstats
path: root/src/Expat.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/Expat.cxx')
-rw-r--r--src/Expat.cxx23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/Expat.cxx b/src/Expat.cxx
index 5d5a8be24..0c7ff9315 100644
--- a/src/Expat.cxx
+++ b/src/Expat.cxx
@@ -37,6 +37,18 @@ ExpatParser::SetError(Error &error)
}
bool
+ExpatParser::Parse(const char *data, size_t length, bool is_final,
+ Error &error)
+{
+ bool success = XML_Parse(parser, data, length,
+ is_final) == XML_STATUS_OK;
+ if (!success)
+ SetError(error);
+
+ return success;
+}
+
+bool
ExpatParser::Parse(InputStream &is, Error &error)
{
assert(is.ready);
@@ -47,21 +59,14 @@ ExpatParser::Parse(InputStream &is, Error &error)
if (nbytes == 0)
break;
- if (XML_Parse(parser, buffer, nbytes, false) != XML_STATUS_OK) {
- SetError(error);
+ if (!Parse(buffer, nbytes, false, error))
return false;
- }
}
if (error.IsDefined())
return false;
- if (XML_Parse(parser, "", 0, true) != XML_STATUS_OK) {
- SetError(error);
- return false;
- }
-
- return true;
+ return Parse("", 0, true, error);
}
const char *