aboutsummaryrefslogtreecommitdiffstats
path: root/qpdf/qpdf.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2021-11-03 15:12:50 +0100
committerJay Berkenbilt <ejb@ql.org>2021-11-03 21:00:05 +0100
commit73752683c936af0f5a556982c2c59516d2914ee3 (patch)
tree1a9e52b7aa9eef21891ce918a75362c69539ee2f /qpdf/qpdf.cc
parenta3a3203f4150e63a303b76060367b8d3b2b21fd3 (diff)
downloadqpdf-73752683c936af0f5a556982c2c59516d2914ee3.tar.zst
Fix overlay/underlay on page with no resources (fixes #527)
Diffstat (limited to 'qpdf/qpdf.cc')
-rw-r--r--qpdf/qpdf.cc12
1 files changed, 11 insertions, 1 deletions
diff --git a/qpdf/qpdf.cc b/qpdf/qpdf.cc
index 2ed03cff..e1cd62da 100644
--- a/qpdf/qpdf.cc
+++ b/qpdf/qpdf.cc
@@ -5226,6 +5226,12 @@ static void do_under_overlay_for_page(
std::string content;
int min_suffix = 1;
QPDFObjectHandle resources = dest_page.getAttribute("/Resources", true);
+ if (! resources.isDictionary())
+ {
+ QTC::TC("qpdf", "qpdf overlay page with no resources");
+ resources = QPDFObjectHandle::newDictionary();
+ dest_page.getObjectHandle().replaceKey("/Resources", resources);
+ }
for (std::vector<int>::iterator iter = pagenos[pageno].begin();
iter != pagenos[pageno].end(); ++iter)
{
@@ -5257,7 +5263,11 @@ static void do_under_overlay_for_page(
{
resources.mergeResources(
QPDFObjectHandle::parse("<< /XObject << >> >>"));
- resources.getKey("/XObject").replaceKey(name, fo[from_pageno]);
+ auto xobject = resources.getKey("/XObject");
+ if (xobject.isDictionary())
+ {
+ xobject.replaceKey(name, fo[from_pageno]);
+ }
++min_suffix;
content += new_content;
}