From c6872d2c700a9d27105debe93662ecaaf8beb3bd Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Mon, 28 Aug 2017 17:05:34 -0400 Subject: Clean up circular references in QPDF_Stream --- include/qpdf/QPDFObjectHandle.hh | 1 + libqpdf/QPDF_Stream.cc | 7 +++++++ libqpdf/qpdf/QPDF_Stream.hh | 3 +++ 3 files changed, 11 insertions(+) diff --git a/include/qpdf/QPDFObjectHandle.hh b/include/qpdf/QPDFObjectHandle.hh index 8c38fffe..936ccc5d 100644 --- a/include/qpdf/QPDFObjectHandle.hh +++ b/include/qpdf/QPDFObjectHandle.hh @@ -597,6 +597,7 @@ class QPDFObjectHandle { friend class QPDF_Dictionary; friend class QPDF_Array; + friend class QPDF_Stream; private: static void releaseResolved(QPDFObjectHandle& o) { diff --git a/libqpdf/QPDF_Stream.cc b/libqpdf/QPDF_Stream.cc index bcf9be92..27c6b477 100644 --- a/libqpdf/QPDF_Stream.cc +++ b/libqpdf/QPDF_Stream.cc @@ -44,6 +44,13 @@ QPDF_Stream::~QPDF_Stream() { } +void +QPDF_Stream::releaseResolved() +{ + this->stream_provider = 0; + QPDFObjectHandle::ReleaseResolver::releaseResolved(this->stream_dict); +} + void QPDF_Stream::setObjGen(int objid, int generation) { diff --git a/libqpdf/qpdf/QPDF_Stream.hh b/libqpdf/qpdf/QPDF_Stream.hh index 8b960f00..a2bd5d61 100644 --- a/libqpdf/qpdf/QPDF_Stream.hh +++ b/libqpdf/qpdf/QPDF_Stream.hh @@ -43,6 +43,9 @@ class QPDF_Stream: public QPDFObject // when adding streams to files. void setObjGen(int objid, int generation); + protected: + virtual void releaseResolved(); + private: static std::map filter_abbreviations; -- cgit v1.2.3-54-g00ecf