aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf
diff options
context:
space:
mode:
authorm-holger <m-holger@kubitscheck.org>2023-05-20 20:56:01 +0200
committerm-holger <m-holger@kubitscheck.org>2023-05-20 20:56:01 +0200
commit05a49cecf1b1caa12575fa34fa478560ba25e31b (patch)
tree1fe9e3419e71f5864fcffcbcef9abe9821e2b64f /libqpdf
parenta85635b839755765713eb27d767f42b357056b2e (diff)
downloadqpdf-05a49cecf1b1caa12575fa34fa478560ba25e31b.tar.zst
Add new method QPDF::newReserved
Diffstat (limited to 'libqpdf')
-rw-r--r--libqpdf/QPDF.cc23
-rw-r--r--libqpdf/QPDFObjectHandle.cc6
2 files changed, 17 insertions, 12 deletions
diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc
index 56a18ccd..33e9c18d 100644
--- a/libqpdf/QPDF.cc
+++ b/libqpdf/QPDF.cc
@@ -4,13 +4,13 @@
#include <algorithm>
#include <atomic>
+#include <cstdlib>
+#include <cstring>
#include <limits>
#include <map>
#include <memory.h>
#include <regex>
#include <sstream>
-#include <cstdlib>
-#include <cstring>
#include <vector>
#include <qpdf/BufferInputSource.hh>
@@ -1985,6 +1985,12 @@ QPDF::makeIndirectObject(QPDFObjectHandle oh)
}
QPDFObjectHandle
+QPDF::newReserved()
+{
+ return makeIndirectFromQPDFObject(QPDF_Reserved::create());
+}
+
+QPDFObjectHandle
QPDF::newStream()
{
return makeIndirectFromQPDFObject(QPDF_Stream::create(
@@ -2207,9 +2213,8 @@ QPDF::reserveObjects(QPDFObjectHandle foreign, ObjCopier& obj_copier, bool top)
QTC::TC("qpdf", "QPDF copy indirect");
if (obj_copier.object_map.count(foreign_og) == 0) {
obj_copier.to_copy.push_back(foreign);
- obj_copier.object_map[foreign_og] = foreign.isStream()
- ? newStream()
- : QPDFObjectHandle::newReserved(this);
+ obj_copier.object_map[foreign_og] =
+ foreign.isStream() ? newStream() : newReserved();
}
}
@@ -2528,9 +2533,7 @@ QPDF::getCompressibleObjGens()
if (obj.isStream()) {
QPDFObjectHandle dict = obj.getDict();
std::set<std::string> keys = dict.getKeys();
- for (auto iter = keys.rbegin();
- iter != keys.rend();
- ++iter) {
+ for (auto iter = keys.rbegin(); iter != keys.rend(); ++iter) {
std::string const& key = *iter;
QPDFObjectHandle value = dict.getKey(key);
if (key == "/Length") {
@@ -2544,9 +2547,7 @@ QPDF::getCompressibleObjGens()
}
} else if (obj.isDictionary()) {
std::set<std::string> keys = obj.getKeys();
- for (auto iter = keys.rbegin();
- iter != keys.rend();
- ++iter) {
+ for (auto iter = keys.rbegin(); iter != keys.rend(); ++iter) {
queue.push_front(obj.getKey(*iter));
}
} else if (obj.isArray()) {
diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc
index 9191f7db..1689cd40 100644
--- a/libqpdf/QPDFObjectHandle.cc
+++ b/libqpdf/QPDFObjectHandle.cc
@@ -2128,7 +2128,11 @@ QPDFObjectHandle::newStream(QPDF* qpdf, std::string const& data)
QPDFObjectHandle
QPDFObjectHandle::newReserved(QPDF* qpdf)
{
- return qpdf->makeIndirectObject(QPDFObjectHandle(QPDF_Reserved::create()));
+ if (qpdf == nullptr) {
+ throw std::runtime_error(
+ "attempt to create reserved object in null qpdf object");
+ }
+ return qpdf->newReserved();
}
void