aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDF_pages.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2012-06-21 18:21:34 +0200
committerJay Berkenbilt <ejb@ql.org>2012-06-21 21:01:02 +0200
commit3844aedd932df16be623059cb64ed0ef7d751b70 (patch)
tree7a2d5df600ca50b6558e503a2b4b6360d29a207b /libqpdf/QPDF_pages.cc
parenteb802cfa8c7109504ad10bf4c89c47c876d9a382 (diff)
downloadqpdf-3844aedd932df16be623059cb64ed0ef7d751b70.tar.zst
Add testing for page APIs
Diffstat (limited to 'libqpdf/QPDF_pages.cc')
-rw-r--r--libqpdf/QPDF_pages.cc39
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