diff --git a/libqpdf/QPDF_optimization.cc b/libqpdf/QPDF_optimization.cc index 11a9040..6606e81 100644 --- a/libqpdf/QPDF_optimization.cc +++ b/libqpdf/QPDF_optimization.cc @@ -215,15 +215,13 @@ QPDF::pushInheritedAttributesToPageInternal( } // Remove this resource from this node. It will be reattached at the page level. cur_pages.removeKey(key); - } else if (!((key == "/Type") || (key == "/Parent") || (key == "/Kids") || - (key == "/Count"))) { + } else if (!(key == "/Type" || key == "/Parent" || key == "/Kids" || key == "/Count")) { // Warn when flattening, but not if the key is at the top level (i.e. "/Parent" not // set), as we don't change these; but flattening removes intermediate /Pages nodes. - if ((warn_skipped_keys) && (cur_pages.hasKey("/Parent"))) { - m->objects.setLastObjectDescription("Pages object", cur_pages.getObjGen()); + if (warn_skipped_keys && cur_pages.hasKey("/Parent")) { warn( qpdf_e_pages, - m->last_object_description, + "Pages object: object " + cur_pages.id_gen().unparse(' '), 0, ("Unknown key " + key + " in /Pages object is being discarded as a result of flattening the /Pages " diff --git a/libqpdf/QPDF_pages.cc b/libqpdf/QPDF_pages.cc index 18bd1c0..604387d 100644 --- a/libqpdf/QPDF_pages.cc +++ b/libqpdf/QPDF_pages.cc @@ -288,12 +288,10 @@ QPDF::insertPageobjToPage(QPDFObjectHandle const& obj, int pos, bool check_dupli if (check_duplicate) { if (!m->pageobj_to_pages_pos.insert(std::make_pair(og, pos)).second) { // The library never calls insertPageobjToPage in a way that causes this to happen. - m->objects.setLastObjectDescription( - "page " + std::to_string(pos) + " (numbered from zero)", og); throw QPDFExc( qpdf_e_pages, m->file->getName(), - m->last_object_description, + "page " + std::to_string(pos) + " (numbered from zero): object " + og.unparse(' '), 0, "duplicate page reference found; this would cause loss of data"); } @@ -407,11 +405,10 @@ QPDF::findPage(QPDFObjGen og) flattenPagesTree(); auto it = m->pageobj_to_pages_pos.find(og); if (it == m->pageobj_to_pages_pos.end()) { - m->objects.setLastObjectDescription("page object", og); throw QPDFExc( qpdf_e_pages, m->file->getName(), - m->last_object_description, + "page object: object " + og.unparse(' '), 0, "page object not referenced in /Pages tree"); } diff --git a/libqpdf/qpdf/QPDF_private.hh b/libqpdf/qpdf/QPDF_private.hh index be82f0a..5b44b1f 100644 --- a/libqpdf/qpdf/QPDF_private.hh +++ b/libqpdf/qpdf/QPDF_private.hh @@ -490,7 +490,6 @@ class QPDF::Doc std::shared_ptr getObjectForParser(int id, int gen, bool parse_pdf); std::shared_ptr getObjectForJSON(int id, int gen); size_t tableSize(); - void setLastObjectDescription(std::string const& description, QPDFObjGen og); // For QPDFWriter: @@ -541,6 +540,7 @@ class QPDF::Doc void resolveObjectsInStream(int obj_stream_number); bool isCached(QPDFObjGen og); bool isUnresolved(QPDFObjGen og); + void setLastObjectDescription(std::string const& description, QPDFObjGen og); private: QPDF& qpdf;