2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-09-28 04:59:05 +00:00

Tidy QPDFAcroFormDocumentHelper::addAndRenameFormFields

This commit is contained in:
m-holger 2023-01-05 12:56:34 +00:00
parent 55abecc42d
commit e7e24fe070

View File

@ -68,18 +68,12 @@ QPDFAcroFormDocumentHelper::addAndRenameFormFields(
{ {
analyze(); analyze();
std::map<std::string, std::string> renames; std::map<std::string, std::string> renames;
std::list<QPDFObjectHandle> queue; QPDFObjGen::set seen;
queue.insert(queue.begin(), fields.begin(), fields.end()); for (std::list<QPDFObjectHandle> queue{fields.begin(), fields.end()};
std::set<QPDFObjGen> seen; !queue.empty();
while (!queue.empty()) { queue.pop_front()) {
QPDFObjectHandle obj = queue.front(); auto& obj = queue.front();
queue.pop_front(); if (seen.add(obj)) {
auto og = obj.getObjGen();
if (seen.count(og)) {
// loop
continue;
}
seen.insert(og);
auto kids = obj.getKey("/Kids"); auto kids = obj.getKey("/Kids");
if (kids.isArray()) { if (kids.isArray()) {
for (auto kid: kids.aitems()) { for (auto kid: kids.aitems()) {
@ -118,6 +112,7 @@ QPDFAcroFormDocumentHelper::addAndRenameFormFields(
} }
} }
} }
}
for (auto i: fields) { for (auto i: fields) {
addFormField(i); addFormField(i);