summaryrefslogtreecommitdiffstats
path: root/libqpdf
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf')
-rw-r--r--libqpdf/QPDFObjectHandle.cc19
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();
}