From 12b139beafc191d02277e7ce97b4c59f7bb0c095 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 9 Jan 2014 20:34:56 +0100 Subject: ExpatParser: add Parse() overload with buffer --- src/Expat.cxx | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'src/Expat.cxx') diff --git a/src/Expat.cxx b/src/Expat.cxx index 5d5a8be24..0c7ff9315 100644 --- a/src/Expat.cxx +++ b/src/Expat.cxx @@ -36,6 +36,18 @@ ExpatParser::SetError(Error &error) XML_ErrorString(code)); } +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) { @@ -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 * -- cgit v1.2.3