diff options
author | Jay Berkenbilt <ejb@ql.org> | 2013-03-03 21:48:31 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2013-03-05 19:35:46 +0100 |
commit | 119f2a4b684aae7cec8841412a5fc89bcbae404d (patch) | |
tree | 46b9247b59b4f9b07ecae4b14991f4840db9a89e /libqpdf/QPDFObjectHandle.cc | |
parent | 7be97b3e80bdb856c9d1fe720f9ee14a8063b5fa (diff) | |
download | qpdf-119f2a4b684aae7cec8841412a5fc89bcbae404d.tar.zst |
Add method to terminate content stream parsing
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(); } |