From 119f2a4b684aae7cec8841412a5fc89bcbae404d Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sun, 3 Mar 2013 15:48:31 -0500 Subject: Add method to terminate content stream parsing --- libqpdf/QPDFObjectHandle.cc | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'libqpdf') diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index e6f53d08..0c6b0a9d 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -23,6 +23,16 @@ #include #include +class TerminateParsing +{ +}; + +void +QPDFObjectHandle::ParserCallbacks::terminateParsing() +{ + throw TerminateParsing(); +} + QPDFObjectHandle::QPDFObjectHandle() : initialized(false), objid(0), @@ -728,7 +738,14 @@ QPDFObjectHandle::parseContentStream(QPDFObjectHandle stream_or_array, throw std::logic_error( "QPDFObjectHandle: parseContentStream called on non-stream"); } - parseContentStream_internal(stream, callbacks); + try + { + parseContentStream_internal(stream, callbacks); + } + catch (TerminateParsing&) + { + return; + } } callbacks->handleEOF(); } -- cgit v1.2.3-70-g09d2