aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDF.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2019-08-18 04:28:19 +0200
committerJay Berkenbilt <ejb@ql.org>2019-08-18 15:00:40 +0200
commit522d2b2227cbc8edc1b7404f2e3980a28d216988 (patch)
treee41408f860be3d0ae1c7fd4e6d632af914d60924 /libqpdf/QPDF.cc
parent5187a3ec85f1a83cbde9e77227e215a2dbcfccb0 (diff)
downloadqpdf-522d2b2227cbc8edc1b7404f2e3980a28d216988.tar.zst
Improve efficiency of fixDanglingReferences
Diffstat (limited to 'libqpdf/QPDF.cc')
-rw-r--r--libqpdf/QPDF.cc12
1 files changed, 5 insertions, 7 deletions
diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc
index a549eed0..5a03facc 100644
--- a/libqpdf/QPDF.cc
+++ b/libqpdf/QPDF.cc
@@ -20,6 +20,7 @@
#include <qpdf/QPDF_Null.hh>
#include <qpdf/QPDF_Dictionary.hh>
#include <qpdf/QPDF_Stream.hh>
+#include <qpdf/QPDF_Array.hh>
std::string QPDF::qpdf_version = "8.4.2";
@@ -1349,13 +1350,10 @@ QPDF::fixDanglingReferences(bool force)
}
else if (obj.isArray())
{
- std::vector<QPDFObjectHandle> elements = obj.getArrayAsVector();
- for (std::vector<QPDFObjectHandle>::iterator iter =
- elements.begin();
- iter != elements.end(); ++iter)
- {
- to_check.push_back(*iter);
- }
+ QPDF_Array* arr =
+ dynamic_cast<QPDF_Array*>(
+ QPDFObjectHandle::ObjAccessor::getObject(obj).getPointer());
+ arr->addExplicitElementsToList(to_check);
}
for (std::list<QPDFObjectHandle>::iterator iter = to_check.begin();
iter != to_check.end(); ++iter)