diff --git a/core/fpdfdoc/cpdf_formfield.cpp b/core/fpdfdoc/cpdf_formfield.cpp
index 283c9b3..cb1344d 100644
--- a/core/fpdfdoc/cpdf_formfield.cpp
+++ b/core/fpdfdoc/cpdf_formfield.cpp
@@ -396,7 +396,7 @@
                               : pdfium::form_fields::kV);
       m_pForm->GetDocument()->AddOrphan(m_pDict->RemoveFor(key));
       m_pDict->SetNewFor<CPDF_String>(key, csValue);
-      int iIndex = FindOptionValue(csValue);
+      int iIndex = FindOption(csValue);
       if (iIndex < 0) {
         if (m_Type == kRichText && !bDefault) {
           m_pForm->GetDocument()->AddOrphan(m_pDict->RemoveFor("RV"));
@@ -414,7 +414,7 @@
       break;
     }
     case kListBox: {
-      int iIndex = FindOptionValue(value);
+      int iIndex = FindOption(value);
       if (iIndex < 0)
         return false;
 
@@ -701,15 +701,7 @@
   return GetOptionText(index, 0);
 }
 
-int CPDF_FormField::FindOption(WideString csOptLabel) const {
-  for (int i = 0; i < CountOptions(); i++) {
-    if (GetOptionValue(i) == csOptLabel)
-      return i;
-  }
-  return -1;
-}
-
-int CPDF_FormField::FindOptionValue(const WideString& csOptValue) const {
+int CPDF_FormField::FindOption(const WideString& csOptValue) const {
   for (int i = 0; i < CountOptions(); i++) {
     if (GetOptionValue(i) == csOptValue)
       return i;
diff --git a/core/fpdfdoc/cpdf_formfield.h b/core/fpdfdoc/cpdf_formfield.h
index e484282..4937a37 100644
--- a/core/fpdfdoc/cpdf_formfield.h
+++ b/core/fpdfdoc/cpdf_formfield.h
@@ -147,9 +147,7 @@
 
   WideString GetOptionLabel(int index) const;
   WideString GetOptionValue(int index) const;
-
-  int FindOption(WideString csOptLabel) const;
-  int FindOptionValue(const WideString& csOptValue) const;
+  int FindOption(const WideString& csOptValue) const;
 
   bool CheckControl(int iControlIndex,
                     bool bChecked,
