Clean up some dictionary usage in CPDF_GenerateAP::GenerateFormAP()

- Reuse `dr_dict` instead of looking it up again.
- Split `stream_dict` into 2 separate variables with smaller scopes.
- Set /Matrix and /BBox in `stream_dict` once with the second variable
  of this name.
- Remove an unreachable early return.

Change-Id: Id018bc68e34a3329f2802017899f3da0200286ca
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/126650
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Thomas Sepez <tsepez@google.com>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfdoc/cpdf_generateap.cpp b/core/fpdfdoc/cpdf_generateap.cpp
index 609185f..711ea5e 100644
--- a/core/fpdfdoc/cpdf_generateap.cpp
+++ b/core/fpdfdoc/cpdf_generateap.cpp
@@ -1134,11 +1134,10 @@
   RetainPtr<CPDF_Dictionary> ap_dict =
       annot_dict->GetOrCreateDictFor(pdfium::annotation::kAP);
   RetainPtr<CPDF_Stream> normal_stream = ap_dict->GetMutableStreamFor("N");
-  RetainPtr<CPDF_Dictionary> stream_dict;
+  RetainPtr<CPDF_Dictionary> resources_dict;
   if (normal_stream) {
-    stream_dict = normal_stream->GetMutableDict();
-    RetainPtr<CPDF_Dictionary> resources_dict =
-        stream_dict->GetMutableDictFor("Resources");
+    RetainPtr<CPDF_Dictionary> stream_dict = normal_stream->GetMutableDict();
+    resources_dict = stream_dict->GetMutableDictFor("Resources");
     if (resources_dict) {
       RetainPtr<CPDF_Dictionary> font_resource_dict =
           resources_dict->GetMutableDictFor("Font");
@@ -1154,20 +1153,18 @@
                                                       font_dict->GetObjNum());
       }
     } else {
-      stream_dict->SetFor("Resources", form_dict->GetDictFor("DR")->Clone());
+      resources_dict = ToDictionary(dr_dict->Clone());
+      stream_dict->SetFor("Resources", resources_dict);
     }
-    stream_dict->SetMatrixFor("Matrix", annot_dimensions_and_color.matrix);
-    stream_dict->SetRectFor("BBox", annot_dimensions_and_color.bbox);
   } else {
     normal_stream =
         doc->NewIndirect<CPDF_Stream>(pdfium::MakeRetain<CPDF_Dictionary>());
     ap_dict->SetNewFor<CPDF_Reference>("N", doc, normal_stream->GetObjNum());
   }
-  CPVT_FontMap map(
-      doc, stream_dict ? stream_dict->GetMutableDictFor("Resources") : nullptr,
-      std::move(default_font), font_name);
-  CPVT_VariableText::Provider prd(&map);
 
+  CPVT_FontMap map(doc, std::move(resources_dict), std::move(default_font),
+                   font_name);
+  CPVT_VariableText::Provider prd(&map);
   switch (type) {
     case CPDF_GenerateAP::kTextField: {
       RetainPtr<const CPDF_Object> v_field =
@@ -1381,18 +1378,13 @@
     }
   }
 
-  if (!normal_stream) {
-    return;
-  }
-
   normal_stream->SetDataFromStringstreamAndRemoveFilter(&app_stream);
-  stream_dict = normal_stream->GetMutableDict();
+  RetainPtr<CPDF_Dictionary> stream_dict = normal_stream->GetMutableDict();
   stream_dict->SetMatrixFor("Matrix", annot_dimensions_and_color.matrix);
   stream_dict->SetRectFor("BBox", annot_dimensions_and_color.bbox);
-  RetainPtr<CPDF_Dictionary> resources_dict =
-      stream_dict->GetMutableDictFor("Resources");
+  resources_dict = stream_dict->GetMutableDictFor("Resources");
   if (!resources_dict) {
-    stream_dict->SetFor("Resources", form_dict->GetDictFor("DR")->Clone());
+    stream_dict->SetFor("Resources", dr_dict->Clone());
     return;
   }