diff --git a/fxbarcode/pdf417/BC_PDF417.cpp b/fxbarcode/pdf417/BC_PDF417.cpp
index 330584b..abf9448 100644
--- a/fxbarcode/pdf417/BC_PDF417.cpp
+++ b/fxbarcode/pdf417/BC_PDF417.cpp
@@ -360,7 +360,7 @@
 bool CBC_PDF417::GenerateBarcodeLogic(const WideStringView& msg,
                                       int32_t errorCorrectionLevel) {
   int32_t errorCorrectionCodeWords =
-      CBC_PDF417ErrorCorrection::getErrorCorrectionCodewordCount(
+      CBC_PDF417ErrorCorrection::GetErrorCorrectionCodewordCount(
           errorCorrectionLevel);
   if (errorCorrectionCodeWords < 0)
     return false;
@@ -390,12 +390,12 @@
     sb += (wchar_t)900;
 
   WideString dataCodewords(sb);
-  WideString ec;
-  if (!CBC_PDF417ErrorCorrection::generateErrorCorrection(
-          dataCodewords, errorCorrectionLevel, &ec)) {
+  Optional<WideString> ec = CBC_PDF417ErrorCorrection::GenerateErrorCorrection(
+      dataCodewords, errorCorrectionLevel);
+  if (!ec.has_value())
     return false;
-  }
-  WideString fullCodewords = dataCodewords + ec;
+
+  WideString fullCodewords = dataCodewords + ec.value();
   m_barcodeMatrix = pdfium::MakeUnique<CBC_BarcodeMatrix>(cols, rows);
   encodeLowLevel(fullCodewords, cols, rows, errorCorrectionLevel,
                  m_barcodeMatrix.get());
diff --git a/fxbarcode/pdf417/BC_PDF417ErrorCorrection.cpp b/fxbarcode/pdf417/BC_PDF417ErrorCorrection.cpp
index 074e8c4..2fdf6a5 100644
--- a/fxbarcode/pdf417/BC_PDF417ErrorCorrection.cpp
+++ b/fxbarcode/pdf417/BC_PDF417ErrorCorrection.cpp
@@ -122,25 +122,21 @@
 
 }  // namespace
 
-CBC_PDF417ErrorCorrection::CBC_PDF417ErrorCorrection() {}
-CBC_PDF417ErrorCorrection::~CBC_PDF417ErrorCorrection() {}
-int32_t CBC_PDF417ErrorCorrection::getErrorCorrectionCodewordCount(
+// static
+int32_t CBC_PDF417ErrorCorrection::GetErrorCorrectionCodewordCount(
     int32_t errorCorrectionLevel) {
   if (errorCorrectionLevel < 0 || errorCorrectionLevel > 8)
     return -1;
   return 1 << (errorCorrectionLevel + 1);
 }
 
-bool CBC_PDF417ErrorCorrection::generateErrorCorrection(
+// static
+Optional<WideString> CBC_PDF417ErrorCorrection::GenerateErrorCorrection(
     const WideString& dataCodewords,
-    int32_t errorCorrectionLevel,
-    WideString* result) {
-  ASSERT(result);
-  ASSERT(result->IsEmpty());
-
-  int32_t k = getErrorCorrectionCodewordCount(errorCorrectionLevel);
+    int32_t errorCorrectionLevel) {
+  int32_t k = GetErrorCorrectionCodewordCount(errorCorrectionLevel);
   if (k < 0)
-    return false;
+    return {};
 
   std::vector<wchar_t> ech(k);
   size_t sld = dataCodewords.GetLength();
@@ -157,11 +153,12 @@
     t3 = 929 - t2;
     ech[0] = (wchar_t)(t3 % 929);
   }
-  result->Reserve(k);
+  WideString result;
+  result.Reserve(k);
   for (int32_t j = k - 1; j >= 0; j--) {
     if (ech[j] != 0)
       ech[j] = static_cast<wchar_t>(929) - ech[j];
-    *result += ech[j];
+    result += ech[j];
   }
-  return true;
+  return result;
 }
diff --git a/fxbarcode/pdf417/BC_PDF417ErrorCorrection.h b/fxbarcode/pdf417/BC_PDF417ErrorCorrection.h
index 3e28162..f5aa898 100644
--- a/fxbarcode/pdf417/BC_PDF417ErrorCorrection.h
+++ b/fxbarcode/pdf417/BC_PDF417ErrorCorrection.h
@@ -10,16 +10,17 @@
 #include <stdint.h>
 
 #include "core/fxcrt/fx_string.h"
+#include "third_party/base/optional.h"
 
 class CBC_PDF417ErrorCorrection {
  public:
-  CBC_PDF417ErrorCorrection();
-  virtual ~CBC_PDF417ErrorCorrection();
+  CBC_PDF417ErrorCorrection() = delete;
+  ~CBC_PDF417ErrorCorrection() = delete;
 
-  static int32_t getErrorCorrectionCodewordCount(int32_t errorCorrectionLevel);
-  static bool generateErrorCorrection(const WideString& dataCodewords,
-                                      int32_t errorCorrectionLevel,
-                                      WideString* result);
+  static int32_t GetErrorCorrectionCodewordCount(int32_t errorCorrectionLevel);
+  static Optional<WideString> GenerateErrorCorrection(
+      const WideString& dataCodewords,
+      int32_t errorCorrectionLevel);
 };
 
 #endif  // FXBARCODE_PDF417_BC_PDF417ERRORCORRECTION_H_
