aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDF_Stream.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf/QPDF_Stream.cc')
-rw-r--r--libqpdf/QPDF_Stream.cc24
1 files changed, 13 insertions, 11 deletions
diff --git a/libqpdf/QPDF_Stream.cc b/libqpdf/QPDF_Stream.cc
index 8137e211..d905d491 100644
--- a/libqpdf/QPDF_Stream.cc
+++ b/libqpdf/QPDF_Stream.cc
@@ -463,34 +463,36 @@ QPDF_Stream::pipeStreamData(Pipeline* pipeline, bool* filterp,
// create to be deleted when this function finishes. Pipelines
// created by QPDFStreamFilter objects will be deleted by those
// objects.
- std::vector<PointerHolder<Pipeline>> to_delete;
+ std::vector<std::shared_ptr<Pipeline>> to_delete;
PointerHolder<ContentNormalizer> normalizer;
+ std::shared_ptr<Pipeline> new_pipeline;
if (filter)
{
if (encode_flags & qpdf_ef_compress)
{
- pipeline = new Pl_Flate("compress stream", pipeline,
- Pl_Flate::a_deflate);
- to_delete.push_back(pipeline);
+ new_pipeline = std::make_shared<Pl_Flate>(
+ "compress stream", pipeline, Pl_Flate::a_deflate);
+ to_delete.push_back(new_pipeline);
+ pipeline = new_pipeline.get();
}
if (encode_flags & qpdf_ef_normalize)
{
normalizer = new ContentNormalizer();
- pipeline = new Pl_QPDFTokenizer(
+ new_pipeline = std::make_shared<Pl_QPDFTokenizer>(
"normalizer", normalizer.get(), pipeline);
- to_delete.push_back(pipeline);
+ to_delete.push_back(new_pipeline);
+ pipeline = new_pipeline.get();
}
- for (std::vector<PointerHolder<
- QPDFObjectHandle::TokenFilter> >::reverse_iterator iter =
- this->token_filters.rbegin();
+ for (auto iter = this->token_filters.rbegin();
iter != this->token_filters.rend(); ++iter)
{
- pipeline = new Pl_QPDFTokenizer(
+ new_pipeline = std::make_shared<Pl_QPDFTokenizer>(
"token filter", (*iter).get(), pipeline);
- to_delete.push_back(pipeline);
+ to_delete.push_back(new_pipeline);
+ pipeline = new_pipeline.get();
}
for (auto f_iter = filters.rbegin();