diff --git a/xfa/fxbarcode/qrcode/BC_QRCoderErrorCorrectionLevel.cpp b/xfa/fxbarcode/qrcode/BC_QRCoderErrorCorrectionLevel.cpp
index c6a81fa..a5450cf 100644
--- a/xfa/fxbarcode/qrcode/BC_QRCoderErrorCorrectionLevel.cpp
+++ b/xfa/fxbarcode/qrcode/BC_QRCoderErrorCorrectionLevel.cpp
@@ -30,33 +30,25 @@
 CBC_QRCoderErrorCorrectionLevel::CBC_QRCoderErrorCorrectionLevel(
     int32_t ordinal,
     int32_t bits,
-    FX_CHAR* name) {
-  m_name += name;
-  m_ordinal = ordinal;
-  m_bits = bits;
-}
+    const FX_CHAR* name)
+    : m_ordinal(ordinal), m_bits(bits), m_name(name) {}
+
 CBC_QRCoderErrorCorrectionLevel::~CBC_QRCoderErrorCorrectionLevel() {}
+
 void CBC_QRCoderErrorCorrectionLevel::Initialize() {
-  L = new CBC_QRCoderErrorCorrectionLevel(0, 0x01, (FX_CHAR*)"L");
-  M = new CBC_QRCoderErrorCorrectionLevel(1, 0x00, (FX_CHAR*)"M");
-  Q = new CBC_QRCoderErrorCorrectionLevel(2, 0x03, (FX_CHAR*)"Q");
-  H = new CBC_QRCoderErrorCorrectionLevel(3, 0x02, (FX_CHAR*)"H");
+  L = new CBC_QRCoderErrorCorrectionLevel(0, 0x01, "L");
+  M = new CBC_QRCoderErrorCorrectionLevel(1, 0x00, "M");
+  Q = new CBC_QRCoderErrorCorrectionLevel(2, 0x03, "Q");
+  H = new CBC_QRCoderErrorCorrectionLevel(3, 0x02, "H");
 }
+
 void CBC_QRCoderErrorCorrectionLevel::Finalize() {
   delete L;
   delete M;
   delete Q;
   delete H;
 }
-int32_t CBC_QRCoderErrorCorrectionLevel::Ordinal() {
-  return m_ordinal;
-}
-int32_t CBC_QRCoderErrorCorrectionLevel::GetBits() {
-  return m_bits;
-}
-CFX_ByteString CBC_QRCoderErrorCorrectionLevel::GetName() {
-  return m_name;
-}
+
 CBC_QRCoderErrorCorrectionLevel* CBC_QRCoderErrorCorrectionLevel::ForBits(
     int32_t bits) {
   switch (bits) {
diff --git a/xfa/fxbarcode/qrcode/BC_QRCoderErrorCorrectionLevel.h b/xfa/fxbarcode/qrcode/BC_QRCoderErrorCorrectionLevel.h
index 9b3a256..a5fdb08 100644
--- a/xfa/fxbarcode/qrcode/BC_QRCoderErrorCorrectionLevel.h
+++ b/xfa/fxbarcode/qrcode/BC_QRCoderErrorCorrectionLevel.h
@@ -10,26 +10,32 @@
 #include "core/fxcrt/include/fx_string.h"
 
 class CBC_QRCoderErrorCorrectionLevel {
- private:
-  int32_t m_ordinal;
-  int32_t m_bits;
-  CFX_ByteString m_name;
-  CBC_QRCoderErrorCorrectionLevel(int32_t ordinal, int32_t bits, FX_CHAR* name);
-  CBC_QRCoderErrorCorrectionLevel();
-
  public:
   static CBC_QRCoderErrorCorrectionLevel* L;
   static CBC_QRCoderErrorCorrectionLevel* M;
   static CBC_QRCoderErrorCorrectionLevel* Q;
   static CBC_QRCoderErrorCorrectionLevel* H;
-  virtual ~CBC_QRCoderErrorCorrectionLevel();
+
   static void Initialize();
   static void Finalize();
-  int32_t Ordinal();
-  int32_t GetBits();
-  CFX_ByteString GetName();
   static void Destroy();
   static CBC_QRCoderErrorCorrectionLevel* ForBits(int32_t bits);
+
+  ~CBC_QRCoderErrorCorrectionLevel();
+
+  int32_t Ordinal() const { return m_ordinal; }
+  int32_t GetBits() const { return m_bits; }
+  CFX_ByteString GetName() const { return m_name; }
+
+ private:
+  CBC_QRCoderErrorCorrectionLevel(int32_t ordinal,
+                                  int32_t bits,
+                                  const FX_CHAR* name);
+  CBC_QRCoderErrorCorrectionLevel();
+
+  int32_t m_ordinal;
+  int32_t m_bits;
+  CFX_ByteString m_name;
 };
 
 #endif  // XFA_FXBARCODE_QRCODE_BC_QRCODERERRORCORRECTIONLEVEL_H_
