diff options
author | Jay Berkenbilt <ejb@ql.org> | 2012-06-21 18:21:34 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2012-06-21 21:01:02 +0200 |
commit | 3844aedd932df16be623059cb64ed0ef7d751b70 (patch) | |
tree | 7a2d5df600ca50b6558e503a2b4b6360d29a207b /libqpdf | |
parent | eb802cfa8c7109504ad10bf4c89c47c876d9a382 (diff) | |
download | qpdf-3844aedd932df16be623059cb64ed0ef7d751b70.tar.zst |
Add testing for page APIs
Diffstat (limited to 'libqpdf')
-rw-r--r-- | libqpdf/QPDF_pages.cc | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/libqpdf/QPDF_pages.cc b/libqpdf/QPDF_pages.cc index 930e8bd1..ed16e2ef 100644 --- a/libqpdf/QPDF_pages.cc +++ b/libqpdf/QPDF_pages.cc @@ -126,18 +126,23 @@ QPDF::insertPageobjToPage(QPDFObjectHandle const& obj, int pos, bool check_duplicate) { ObjGen og(obj.getObjectID(), obj.getGeneration()); - bool duplicate = - (! this->pageobj_to_pages_pos.insert(std::make_pair(og, pos)).second); - if (duplicate && check_duplicate) - { - QTC::TC("qpdf", "QPDF duplicate page reference"); - setLastObjectDescription("page " + QUtil::int_to_string(pos) + - " (numbered from zero)", - og.obj, og.gen); - throw QPDFExc(qpdf_e_pages, this->file->getName(), - this->last_object_description, 0, - "duplicate page reference found;" - " this would cause loss of data"); + if (check_duplicate) + { + if (! this->pageobj_to_pages_pos.insert(std::make_pair(og, pos)).second) + { + QTC::TC("qpdf", "QPDF duplicate page reference"); + setLastObjectDescription("page " + QUtil::int_to_string(pos) + + " (numbered from zero)", + og.obj, og.gen); + throw QPDFExc(qpdf_e_pages, this->file->getName(), + this->last_object_description, 0, + "duplicate page reference found;" + " this would cause loss of data"); + } + } + else + { + this->pageobj_to_pages_pos[og] = pos; } } @@ -150,6 +155,16 @@ QPDF::insertPage(QPDFObjectHandle newpage, int pos) flattenPagesTree(); newpage.assertPageObject(); + if (! newpage.isIndirect()) + { + QTC::TC("qpdf", "QPDF insert non-indirect page"); + newpage = this->makeIndirectObject(newpage); + } + else + { + QTC::TC("qpdf", "QPDF insert indirect page"); + } + QTC::TC("qpdf", "QPDF insert page", (pos == 0) ? 0 : // insert at beginning (pos == ((int)this->all_pages.size())) ? 1 : // insert at end |