diff options
Diffstat (limited to 'libqpdf/QPDFObjectHandle.cc')
-rw-r--r-- | libqpdf/QPDFObjectHandle.cc | 19 |
1 files changed, 18 insertions, 1 deletions
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 <stdlib.h> #include <ctype.h> +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(); } |