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 QPDFAcroFormDocumentHelper::getFormFieldsForPage(QPDFPageObjectHelper ph) { analyze(); - std::set added; + QPDFObjGen::set todo; std::vector 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;