aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDF_optimization.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2010-06-05 23:00:05 +0200
committerJay Berkenbilt <ejb@ql.org>2010-06-05 23:00:05 +0200
commitbf75e208e930a757c4d66e92e5594f422da8f935 (patch)
tree60dfd436192d43125e51c7fad2d0670ab2476591 /libqpdf/QPDF_optimization.cc
parenteef71544123cc56c08e89be34380a867af24a0a0 (diff)
downloadqpdf-bf75e208e930a757c4d66e92e5594f422da8f935.tar.zst
eliminate extraneous allocations by not calling makeDirect when we
know an object is already direct git-svn-id: svn+q:///qpdf/trunk@972 71b93d88-0707-0410-a8cf-f5a4172ac649
Diffstat (limited to 'libqpdf/QPDF_optimization.cc')
-rw-r--r--libqpdf/QPDF_optimization.cc18
1 files changed, 12 insertions, 6 deletions
diff --git a/libqpdf/QPDF_optimization.cc b/libqpdf/QPDF_optimization.cc
index 872da859..6102d4d7 100644
--- a/libqpdf/QPDF_optimization.cc
+++ b/libqpdf/QPDF_optimization.cc
@@ -104,9 +104,12 @@ QPDF::flattenScalarReferences()
QPDFObjectHandle oh = node.getArrayItem(i);
if (oh.isScalar())
{
- QTC::TC("qpdf", "QPDF opt flatten array scalar");
- oh.makeDirect();
- node.setArrayItem(i, oh);
+ if (oh.isIndirect())
+ {
+ QTC::TC("qpdf", "QPDF opt flatten array scalar");
+ oh.makeDirect();
+ node.setArrayItem(i, oh);
+ }
}
else
{
@@ -136,9 +139,12 @@ QPDF::flattenScalarReferences()
}
else if (oh.isScalar())
{
- QTC::TC("qpdf", "QPDF opt flatten dict scalar");
- oh.makeDirect();
- dict.replaceKey(key, oh);
+ if (oh.isIndirect())
+ {
+ QTC::TC("qpdf", "QPDF opt flatten dict scalar");
+ oh.makeDirect();
+ dict.replaceKey(key, oh);
+ }
}
else
{