diff options
Diffstat (limited to 'libqpdf')
-rw-r--r-- | libqpdf/QPDFAcroFormDocumentHelper.cc | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/libqpdf/QPDFAcroFormDocumentHelper.cc b/libqpdf/QPDFAcroFormDocumentHelper.cc index 6a7eca55..9c59055e 100644 --- a/libqpdf/QPDFAcroFormDocumentHelper.cc +++ b/libqpdf/QPDFAcroFormDocumentHelper.cc @@ -217,18 +217,12 @@ std::vector<QPDFFormFieldObjectHelper> QPDFAcroFormDocumentHelper::getFormFieldsForPage(QPDFPageObjectHelper ph) { analyze(); - std::set<QPDFObjGen> added; + QPDFObjGen::set todo; std::vector<QPDFFormFieldObjectHelper> result; - auto widget_annotations = getWidgetAnnotationsForPage(ph); - for (auto annot: widget_annotations) { - auto field = getFieldForAnnotation(annot); - field = field.getTopLevelField(); - auto og = field.getObjectHandle().getObjGen(); - if (!added.count(og)) { - added.insert(og); - if (field.getObjectHandle().isDictionary()) { - result.push_back(field); - } + for (auto& annot: getWidgetAnnotationsForPage(ph)) { + auto field = getFieldForAnnotation(annot).getTopLevelField(); + if (todo.add(field) && field.getObjectHandle().isDictionary()) { + result.push_back(field); } } return result; |