diff --git a/libqpdf/QPDFWriter.cc b/libqpdf/QPDFWriter.cc index a1ae23c5..a38b2138 100644 --- a/libqpdf/QPDFWriter.cc +++ b/libqpdf/QPDFWriter.cc @@ -1249,7 +1249,7 @@ QPDFWriter::willFilterStream( if (stream_dict.isDictionaryOfType("/Metadata")) { is_metadata = true; } - bool filter = (stream.isDataModified() || m->compress_streams || m->stream_decode_level); + bool filter = stream.isDataModified() || m->compress_streams || m->stream_decode_level; bool filter_on_write = stream.getFilterOnWrite(); if (!filter_on_write) { QTC::TC("qpdf", "QPDFWriter getFilterOnWrite false"); @@ -1261,15 +1261,15 @@ QPDFWriter::willFilterStream( // CPU cycles uncompressing and recompressing stuff. This can be overridden with // setRecompressFlate(true). QPDFObjectHandle filter_obj = stream_dict.getKey("/Filter"); - if ((!m->recompress_flate) && (!stream.isDataModified()) && filter_obj.isName() && - ((filter_obj.getName() == "/FlateDecode") || (filter_obj.getName() == "/Fl"))) { + if (!m->recompress_flate && !stream.isDataModified() && filter_obj.isName() && + (filter_obj.getName() == "/FlateDecode" || filter_obj.getName() == "/Fl")) { QTC::TC("qpdf", "QPDFWriter not recompressing /FlateDecode"); filter = false; } } bool normalize = false; bool uncompress = false; - if (filter_on_write && is_metadata && ((!m->encrypted) || (m->encrypt_metadata == false))) { + if (filter_on_write && is_metadata && (!m->encrypted || !m->encrypt_metadata)) { QTC::TC("qpdf", "QPDFWriter not compressing metadata"); filter = true; compress_stream = false; @@ -1283,18 +1283,19 @@ QPDFWriter::willFilterStream( } bool filtered = false; - for (int attempt = 1; attempt <= 2; ++attempt) { + for (bool first_attempt: {true, false}) { pushPipeline(new Pl_Buffer("stream data")); PipelinePopper pp_stream_data(this, stream_data); activatePipelineStack(pp_stream_data); try { filtered = stream.pipeStreamData( m->pipeline, - (((filter && normalize) ? qpdf_ef_normalize : 0) | - ((filter && compress_stream) ? qpdf_ef_compress : 0)), - (filter ? (uncompress ? qpdf_dl_all : m->stream_decode_level) : qpdf_dl_none), + !filter ? 0 + : ((normalize ? qpdf_ef_normalize : 0) | + (compress_stream ? qpdf_ef_compress : 0)), + !filter ? qpdf_dl_none : (uncompress ? qpdf_dl_all : m->stream_decode_level), false, - (attempt == 1)); + first_attempt); } catch (std::runtime_error& e) { throw std::runtime_error( "error while getting stream data for " + stream.unparse() + ": " + e.what());