Combine CBC_ReedSolomonGF256Poly ctors.

Remove Init().

Change-Id: I4d289ad529c740f7fd61c836f8f502d87fad9fe1
Reviewed-on: https://pdfium-review.googlesource.com/c/46557
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/fxbarcode/common/reedsolomon/BC_ReedSolomon.cpp b/fxbarcode/common/reedsolomon/BC_ReedSolomon.cpp
index 71d5dd9..f19886e 100644
--- a/fxbarcode/common/reedsolomon/BC_ReedSolomon.cpp
+++ b/fxbarcode/common/reedsolomon/BC_ReedSolomon.cpp
@@ -31,8 +31,8 @@
 
 CBC_ReedSolomonEncoder::CBC_ReedSolomonEncoder(CBC_ReedSolomonGF256* field)
     : m_field(field) {
-  m_cachedGenerators.push_back(
-      pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(m_field.Get(), 1));
+  m_cachedGenerators.push_back(pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(
+      m_field.Get(), std::vector<int32_t>{1}));
 }
 
 CBC_ReedSolomonEncoder::~CBC_ReedSolomonEncoder() {}
@@ -42,10 +42,8 @@
   if (degree >= m_cachedGenerators.size()) {
     CBC_ReedSolomonGF256Poly* lastGenerator = m_cachedGenerators.back().get();
     for (size_t d = m_cachedGenerators.size(); d <= degree; ++d) {
-      std::vector<int32_t> temp = {1, m_field->Exp(d - 1)};
-      CBC_ReedSolomonGF256Poly temp_poly;
-      temp_poly.Init(m_field.Get(), temp);
-
+      CBC_ReedSolomonGF256Poly temp_poly(m_field.Get(),
+                                         {1, m_field->Exp(d - 1)});
       auto nextGenerator = lastGenerator->Multiply(&temp_poly);
       if (!nextGenerator)
         return nullptr;
@@ -74,9 +72,7 @@
   for (size_t x = 0; x < dataBytes; x++)
     infoCoefficients[x] = (*toEncode)[x];
 
-  CBC_ReedSolomonGF256Poly info;
-  info.Init(m_field.Get(), infoCoefficients);
-
+  CBC_ReedSolomonGF256Poly info(m_field.Get(), infoCoefficients);
   auto infoTemp = info.MultiplyByMonomial(ecBytes, 1);
   if (!infoTemp)
     return false;
diff --git a/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256.cpp b/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256.cpp
index ec7878c..b0dd0a2 100644
--- a/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256.cpp
+++ b/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256.cpp
@@ -60,8 +60,10 @@
 }
 
 void CBC_ReedSolomonGF256::Init() {
-  m_zero = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(this, 0);
-  m_one = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(this, 1);
+  m_zero = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(
+      this, std::vector<int32_t>{0});
+  m_one = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(this,
+                                                       std::vector<int32_t>{1});
 }
 
 CBC_ReedSolomonGF256::~CBC_ReedSolomonGF256() {}
@@ -85,9 +87,7 @@
 
   std::vector<int32_t> coefficients(degree + 1);
   coefficients[0] = coefficient;
-  auto temp = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>();
-  temp->Init(this, coefficients);
-  return temp;
+  return pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(this, coefficients);
 }
 
 // static
diff --git a/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.cpp b/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.cpp
index 59e239e..15f4259 100644
--- a/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.cpp
+++ b/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.cpp
@@ -30,26 +30,12 @@
 #include "third_party/base/ptr_util.h"
 #include "third_party/base/stl_util.h"
 
-CBC_ReedSolomonGF256Poly::CBC_ReedSolomonGF256Poly(CBC_ReedSolomonGF256* field,
-                                                   int32_t coefficients) {
-  if (!field)
-    return;
-
-  m_field = field;
-  m_coefficients.push_back(coefficients);
-}
-
-CBC_ReedSolomonGF256Poly::CBC_ReedSolomonGF256Poly() {
-  m_field = nullptr;
-}
-
-CBC_ReedSolomonGF256Poly::~CBC_ReedSolomonGF256Poly() = default;
-
-void CBC_ReedSolomonGF256Poly::Init(CBC_ReedSolomonGF256* field,
-                                    const std::vector<int32_t>& coefficients) {
+CBC_ReedSolomonGF256Poly::CBC_ReedSolomonGF256Poly(
+    CBC_ReedSolomonGF256* field,
+    const std::vector<int32_t>& coefficients)
+    : m_field(field) {
+  ASSERT(m_field);
   ASSERT(!coefficients.empty());
-
-  m_field = field;
   if (coefficients.size() == 1 || coefficients.front() != 0) {
     m_coefficients = coefficients;
     return;
@@ -69,6 +55,8 @@
   }
 }
 
+CBC_ReedSolomonGF256Poly::~CBC_ReedSolomonGF256Poly() = default;
+
 const std::vector<int32_t>& CBC_ReedSolomonGF256Poly::GetCoefficients() const {
   return m_coefficients;
 }
@@ -87,9 +75,8 @@
 
 std::unique_ptr<CBC_ReedSolomonGF256Poly> CBC_ReedSolomonGF256Poly::Clone()
     const {
-  auto temp = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>();
-  temp->Init(m_field.Get(), m_coefficients);
-  return temp;
+  return pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(m_field.Get(),
+                                                      m_coefficients);
 }
 
 std::unique_ptr<CBC_ReedSolomonGF256Poly>
@@ -106,16 +93,14 @@
 
   std::vector<int32_t> sumDiff(largerCoefficients.size());
   size_t lengthDiff = largerCoefficients.size() - smallerCoefficients.size();
-  for (size_t i = 0; i < lengthDiff; i++)
+  for (size_t i = 0; i < lengthDiff; ++i)
     sumDiff[i] = largerCoefficients[i];
 
-  for (size_t j = lengthDiff; j < largerCoefficients.size(); j++) {
-    sumDiff[j] = CBC_ReedSolomonGF256::AddOrSubtract(
-        smallerCoefficients[j - lengthDiff], largerCoefficients[j]);
+  for (size_t i = lengthDiff; i < largerCoefficients.size(); ++i) {
+    sumDiff[i] = CBC_ReedSolomonGF256::AddOrSubtract(
+        smallerCoefficients[i - lengthDiff], largerCoefficients[i]);
   }
-  auto temp = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>();
-  temp->Init(m_field.Get(), sumDiff);
-  return temp;
+  return pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(m_field.Get(), sumDiff);
 }
 
 std::unique_ptr<CBC_ReedSolomonGF256Poly> CBC_ReedSolomonGF256Poly::Multiply(
@@ -135,9 +120,7 @@
           product[i + j], m_field->Multiply(aCoeff, bCoefficients[j]));
     }
   }
-  auto temp = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>();
-  temp->Init(m_field.Get(), product);
-  return temp;
+  return pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(m_field.Get(), product);
 }
 
 std::unique_ptr<CBC_ReedSolomonGF256Poly> CBC_ReedSolomonGF256Poly::Multiply(
@@ -152,9 +135,7 @@
   for (size_t i = 0; i < size; i++)
     product[i] = m_field->Multiply(m_coefficients[i], scalar);
 
-  auto temp = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>();
-  temp->Init(m_field.Get(), product);
-  return temp;
+  return pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(m_field.Get(), product);
 }
 
 std::unique_ptr<CBC_ReedSolomonGF256Poly>
@@ -170,9 +151,7 @@
   for (size_t i = 0; i < size; i++)
     product[i] = m_field->Multiply(m_coefficients[i], coefficient);
 
-  auto temp = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>();
-  temp->Init(m_field.Get(), product);
-  return temp;
+  return pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(m_field.Get(), product);
 }
 
 std::unique_ptr<CBC_ReedSolomonGF256Poly> CBC_ReedSolomonGF256Poly::Divide(
diff --git a/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.h b/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.h
index c3a3370c..0f046ce 100644
--- a/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.h
+++ b/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.h
@@ -16,13 +16,10 @@
 
 class CBC_ReedSolomonGF256Poly final {
  public:
-  CBC_ReedSolomonGF256Poly(CBC_ReedSolomonGF256* field, int32_t coefficients);
-  CBC_ReedSolomonGF256Poly();
+  CBC_ReedSolomonGF256Poly(CBC_ReedSolomonGF256* field,
+                           const std::vector<int32_t>& coefficients);
   ~CBC_ReedSolomonGF256Poly();
 
-  void Init(CBC_ReedSolomonGF256* field,
-            const std::vector<int32_t>& coefficients);
-
   int32_t GetCoefficients(int32_t degree) const;
   const std::vector<int32_t>& GetCoefficients() const;
   int32_t GetDegree() const;
@@ -40,7 +37,7 @@
   std::unique_ptr<CBC_ReedSolomonGF256Poly> Clone() const;
 
  private:
-  UnownedPtr<CBC_ReedSolomonGF256> m_field;
+  UnownedPtr<CBC_ReedSolomonGF256> const m_field;
   std::vector<int32_t> m_coefficients;
 };