Commit 1240c5eecf63443bc31812c11e47738c9a06a990

Authored by m-holger
1 parent f699aacb

Refactor `QPDFAcroFormDocumentHelper`: replace `getArrayNItems` with `size`, int…

…roduce `empty` checks, and use `std::cmp_less` and `emplace_back` for better clarity and efficiency.
libqpdf/QPDFAcroFormDocumentHelper.cc
@@ -7,6 +7,8 @@ @@ -7,6 +7,8 @@
7 #include <qpdf/QUtil.hh> 7 #include <qpdf/QUtil.hh>
8 #include <qpdf/ResourceFinder.hh> 8 #include <qpdf/ResourceFinder.hh>
9 9
  10 +#include <utility>
  11 +
10 using namespace qpdf; 12 using namespace qpdf;
11 using namespace std::literals; 13 using namespace std::literals;
12 14
@@ -139,7 +141,7 @@ QPDFAcroFormDocumentHelper::removeFormFields(std::set&lt;QPDFObjGen&gt; const&amp; to_remo @@ -139,7 +141,7 @@ QPDFAcroFormDocumentHelper::removeFormFields(std::set&lt;QPDFObjGen&gt; const&amp; to_remo
139 } 141 }
140 142
141 int i = 0; 143 int i = 0;
142 - while (i < fields.getArrayNItems()) { 144 + while (std::cmp_less(i, fields.size())) {
143 auto field = fields.getArrayItem(i); 145 auto field = fields.getArrayItem(i);
144 if (to_remove.contains(field.getObjGen())) { 146 if (to_remove.contains(field.getObjGen())) {
145 fields.eraseItem(i); 147 fields.eraseItem(i);
@@ -896,12 +898,13 @@ QPDFAcroFormDocumentHelper::transformAnnotations( @@ -896,12 +898,13 @@ QPDFAcroFormDocumentHelper::transformAnnotations(
896 } 898 }
897 } 899 }
898 auto kids = obj.getKey("/Kids"); 900 auto kids = obj.getKey("/Kids");
899 - if (kids.isArray()) {  
900 - for (int i = 0; i < kids.getArrayNItems(); ++i) { 901 + int sz = static_cast<int>(kids.size());
  902 + if (sz != 1 || kids.isArray()) {
  903 + for (int i = 0; i < sz; ++i) {
901 auto kid = kids.getArrayItem(i); 904 auto kid = kids.getArrayItem(i);
902 if (maybe_copy_object(kid)) { 905 if (maybe_copy_object(kid)) {
903 kids.setArrayItem(i, kid); 906 kids.setArrayItem(i, kid);
904 - queue.push_back(kid); 907 + queue.emplace_back(kid);
905 } 908 }
906 } 909 }
907 } 910 }
@@ -1013,7 +1016,7 @@ QPDFAcroFormDocumentHelper::fixCopiedAnnotations( @@ -1013,7 +1016,7 @@ QPDFAcroFormDocumentHelper::fixCopiedAnnotations(
1013 std::set<QPDFObjGen>* added_fields) 1016 std::set<QPDFObjGen>* added_fields)
1014 { 1017 {
1015 auto old_annots = from_page.getKey("/Annots"); 1018 auto old_annots = from_page.getKey("/Annots");
1016 - if ((!old_annots.isArray()) || (old_annots.getArrayNItems() == 0)) { 1019 + if (old_annots.empty() || !old_annots.isArray()) {
1017 return; 1020 return;
1018 } 1021 }
1019 1022