diff options
Diffstat (limited to 'libqpdf/QPDF_Array.cc')
-rw-r--r-- | libqpdf/QPDF_Array.cc | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/libqpdf/QPDF_Array.cc b/libqpdf/QPDF_Array.cc index e9d216a5..def40e9b 100644 --- a/libqpdf/QPDF_Array.cc +++ b/libqpdf/QPDF_Array.cc @@ -7,6 +7,26 @@ static const QPDFObjectHandle null_oh = QPDFObjectHandle::newNull(); +inline void +QPDF_Array::checkOwnership(QPDFObjectHandle const& item) const +{ + if (auto obj = item.getObjectPtr()) { + if (qpdf) { + if (auto item_qpdf = obj->getQPDF()) { + if (qpdf != item_qpdf) { + throw std::logic_error( + "Attempting to add an object from a different QPDF. " + "Use QPDF::copyForeignObject to add objects from " + "another file."); + } + } + } + } else { + throw std::logic_error( + "Attempting to add an uninitialized object to a QPDF_Array."); + } +} + QPDF_Array::QPDF_Array(std::vector<QPDFObjectHandle> const& v) : QPDFValue(::ot_array, "array") { |