diff --git a/fpdfsdk/pwl/cpwl_appstream.cpp b/fpdfsdk/pwl/cpwl_appstream.cpp
index 4b68972..670bda6 100644
--- a/fpdfsdk/pwl/cpwl_appstream.cpp
+++ b/fpdfsdk/pwl/cpwl_appstream.cpp
@@ -1100,6 +1100,20 @@
   return ByteString(sAppStream);
 }
 
+void SetDefaultIconName(CPDF_Stream* pIcon, const char* name) {
+  if (!pIcon)
+    return;
+
+  CPDF_Dictionary* pImageDict = pIcon->GetDict();
+  if (!pImageDict)
+    return;
+
+  if (pImageDict->KeyExist("Name"))
+    return;
+
+  pImageDict->SetNewFor<CPDF_String>("Name", name, false);
+}
+
 }  // namespace
 
 CPWL_AppStream::CPWL_AppStream(CPDFSDK_Widget* widget, CPDF_Dictionary* dict)
@@ -1213,29 +1227,11 @@
   if (pControl->HasMKEntry("IX"))
     pDownIcon = pControl->GetDownIcon();
 
-  if (pNormalIcon) {
-    if (CPDF_Dictionary* pImageDict = pNormalIcon->GetDict()) {
-      if (pImageDict->GetStringFor("Name").IsEmpty())
-        pImageDict->SetNewFor<CPDF_String>("Name", "ImgA", false);
-    }
-  }
-
-  if (pRolloverIcon) {
-    if (CPDF_Dictionary* pImageDict = pRolloverIcon->GetDict()) {
-      if (pImageDict->GetStringFor("Name").IsEmpty())
-        pImageDict->SetNewFor<CPDF_String>("Name", "ImgB", false);
-    }
-  }
-
-  if (pDownIcon) {
-    if (CPDF_Dictionary* pImageDict = pDownIcon->GetDict()) {
-      if (pImageDict->GetStringFor("Name").IsEmpty())
-        pImageDict->SetNewFor<CPDF_String>("Name", "ImgC", false);
-    }
-  }
+  SetDefaultIconName(pNormalIcon, "ImgA");
+  SetDefaultIconName(pRolloverIcon, "ImgB");
+  SetDefaultIconName(pDownIcon, "ImgC");
 
   CPDF_IconFit iconFit = pControl->GetIconFit();
-
   CBA_FontMap font_map(
       widget_.Get(),
       widget_->GetInteractiveForm()->GetFormFillEnv()->GetSysHandler());
