Commit 9cdf980f3b096dd8360d4286ebcd1f29ebb8d35b
1 parent
a03c5fce
Refactor decode object handling in QPDF_Stream.cc
Simplified the logic for handling /DecodeParms by using `as_array` and modernized code with `auto` and `emplace_back`. This improves code readability and aligns with modern C++ practices.
Showing
1 changed file
with
10 additions
and
10 deletions
libqpdf/QPDF_Stream.cc
| @@ -383,21 +383,21 @@ Stream::filterable( | @@ -383,21 +383,21 @@ Stream::filterable( | ||
| 383 | } | 383 | } |
| 384 | 384 | ||
| 385 | // filters now contains a list of filters to be applied in order. See which ones we can support. | 385 | // filters now contains a list of filters to be applied in order. See which ones we can support. |
| 386 | - | ||
| 387 | // See if we can support any decode parameters that are specified. | 386 | // See if we can support any decode parameters that are specified. |
| 388 | 387 | ||
| 389 | - QPDFObjectHandle decode_obj = s->stream_dict.getKey("/DecodeParms"); | 388 | + auto decode_obj = s->stream_dict.getKey("/DecodeParms"); |
| 390 | std::vector<QPDFObjectHandle> decode_parms; | 389 | std::vector<QPDFObjectHandle> decode_parms; |
| 391 | - if (decode_obj.isArray() && (decode_obj.getArrayNItems() == 0)) { | ||
| 392 | - decode_obj = QPDFObjectHandle::newNull(); | ||
| 393 | - } | ||
| 394 | - if (decode_obj.isArray()) { | ||
| 395 | - for (int i = 0; i < decode_obj.getArrayNItems(); ++i) { | ||
| 396 | - decode_parms.push_back(decode_obj.getArrayItem(i)); | 390 | + |
| 391 | + auto decode_array = decode_obj.as_array(strict); | ||
| 392 | + if (!decode_array || decode_array.size() == 0) { | ||
| 393 | + if (decode_array) { | ||
| 394 | + decode_parms.assign(filters.size(), QPDFObjectHandle::newNull()); | ||
| 395 | + } else { | ||
| 396 | + decode_parms.assign(filters.size(), decode_obj); | ||
| 397 | } | 397 | } |
| 398 | } else { | 398 | } else { |
| 399 | - for (unsigned int i = 0; i < filters.size(); ++i) { | ||
| 400 | - decode_parms.push_back(decode_obj); | 399 | + for (auto& item: decode_array) { |
| 400 | + decode_parms.emplace_back(item); | ||
| 401 | } | 401 | } |
| 402 | } | 402 | } |
| 403 | 403 |