Clean up CBC_ReedSolomonGF256Poly::Init().

The conditions where it would return false are not reachable. Turn them
into asserts and make the method return void.

Change-Id: I5dc5585a1a648bb791f2083c82b598bfe4dcc345
Reviewed-on: https://pdfium-review.googlesource.com/c/46555
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/fxbarcode/common/reedsolomon/BC_ReedSolomon.cpp b/fxbarcode/common/reedsolomon/BC_ReedSolomon.cpp
index 8ce4ebf..71d5dd9 100644
--- a/fxbarcode/common/reedsolomon/BC_ReedSolomon.cpp
+++ b/fxbarcode/common/reedsolomon/BC_ReedSolomon.cpp
@@ -44,8 +44,7 @@
     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;
-      if (!temp_poly.Init(m_field.Get(), &temp))
-        return nullptr;
+      temp_poly.Init(m_field.Get(), temp);
 
       auto nextGenerator = lastGenerator->Multiply(&temp_poly);
       if (!nextGenerator)
@@ -76,8 +75,7 @@
     infoCoefficients[x] = (*toEncode)[x];
 
   CBC_ReedSolomonGF256Poly info;
-  if (!info.Init(m_field.Get(), &infoCoefficients))
-    return false;
+  info.Init(m_field.Get(), infoCoefficients);
 
   auto infoTemp = info.MultiplyByMonomial(ecBytes, 1);
   if (!infoTemp)
diff --git a/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256.cpp b/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256.cpp
index a5657e1..ec7878c 100644
--- a/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256.cpp
+++ b/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256.cpp
@@ -86,8 +86,7 @@
   std::vector<int32_t> coefficients(degree + 1);
   coefficients[0] = coefficient;
   auto temp = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>();
-  if (!temp->Init(this, &coefficients))
-    return nullptr;
+  temp->Init(this, coefficients);
   return temp;
 }
 
diff --git a/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.cpp b/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.cpp
index af6472a..59e239e 100644
--- a/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.cpp
+++ b/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.cpp
@@ -25,6 +25,7 @@
 #include <memory>
 #include <utility>
 
+#include "core/fxcrt/fx_system.h"
 #include "fxbarcode/common/reedsolomon/BC_ReedSolomonGF256.h"
 #include "third_party/base/ptr_util.h"
 #include "third_party/base/stl_util.h"
@@ -42,30 +43,30 @@
   m_field = nullptr;
 }
 
-bool CBC_ReedSolomonGF256Poly::Init(CBC_ReedSolomonGF256* field,
-                                    const std::vector<int32_t>* coefficients) {
-  if (!coefficients || coefficients->empty())
-    return false;
+CBC_ReedSolomonGF256Poly::~CBC_ReedSolomonGF256Poly() = default;
+
+void CBC_ReedSolomonGF256Poly::Init(CBC_ReedSolomonGF256* field,
+                                    const std::vector<int32_t>& coefficients) {
+  ASSERT(!coefficients.empty());
 
   m_field = field;
-  size_t coefficientsLength = coefficients->size();
-  if (coefficientsLength > 1 && coefficients->front() == 0) {
-    size_t firstNonZero = 1;
-    while (firstNonZero < coefficientsLength &&
-           (*coefficients)[firstNonZero] == 0) {
-      firstNonZero++;
-    }
-    if (firstNonZero == coefficientsLength) {
-      m_coefficients = m_field->GetZero()->GetCoefficients();
-    } else {
-      m_coefficients.resize(coefficientsLength - firstNonZero);
-      for (size_t i = firstNonZero, j = 0; i < coefficientsLength; i++, j++)
-        m_coefficients[j] = (*coefficients)[i];
-    }
-  } else {
-    m_coefficients = *coefficients;
+  if (coefficients.size() == 1 || coefficients.front() != 0) {
+    m_coefficients = coefficients;
+    return;
   }
-  return true;
+
+  size_t firstNonZero = 1;
+  while (firstNonZero < coefficients.size() &&
+         coefficients[firstNonZero] == 0) {
+    firstNonZero++;
+  }
+  if (firstNonZero == coefficients.size()) {
+    m_coefficients = m_field->GetZero()->GetCoefficients();
+  } else {
+    m_coefficients.resize(coefficients.size() - firstNonZero);
+    for (size_t i = firstNonZero, j = 0; i < coefficients.size(); i++, j++)
+      m_coefficients[j] = coefficients[i];
+  }
 }
 
 const std::vector<int32_t>& CBC_ReedSolomonGF256Poly::GetCoefficients() const {
@@ -87,8 +88,7 @@
 std::unique_ptr<CBC_ReedSolomonGF256Poly> CBC_ReedSolomonGF256Poly::Clone()
     const {
   auto temp = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>();
-  if (!temp->Init(m_field.Get(), &m_coefficients))
-    return nullptr;
+  temp->Init(m_field.Get(), m_coefficients);
   return temp;
 }
 
@@ -114,8 +114,7 @@
         smallerCoefficients[j - lengthDiff], largerCoefficients[j]);
   }
   auto temp = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>();
-  if (!temp->Init(m_field.Get(), &sumDiff))
-    return nullptr;
+  temp->Init(m_field.Get(), sumDiff);
   return temp;
 }
 
@@ -137,8 +136,7 @@
     }
   }
   auto temp = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>();
-  if (!temp->Init(m_field.Get(), &product))
-    return nullptr;
+  temp->Init(m_field.Get(), product);
   return temp;
 }
 
@@ -155,8 +153,7 @@
     product[i] = m_field->Multiply(m_coefficients[i], scalar);
 
   auto temp = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>();
-  if (!temp->Init(m_field.Get(), &product))
-    return nullptr;
+  temp->Init(m_field.Get(), product);
   return temp;
 }
 
@@ -174,8 +171,7 @@
     product[i] = m_field->Multiply(m_coefficients[i], coefficient);
 
   auto temp = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>();
-  if (!temp->Init(m_field.Get(), &product))
-    return nullptr;
+  temp->Init(m_field.Get(), product);
   return temp;
 }
 
@@ -217,5 +213,3 @@
   }
   return remainder;
 }
-
-CBC_ReedSolomonGF256Poly::~CBC_ReedSolomonGF256Poly() {}
diff --git a/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.h b/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.h
index 5cd6b85..c3a3370c 100644
--- a/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.h
+++ b/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.h
@@ -19,8 +19,9 @@
   CBC_ReedSolomonGF256Poly(CBC_ReedSolomonGF256* field, int32_t coefficients);
   CBC_ReedSolomonGF256Poly();
   ~CBC_ReedSolomonGF256Poly();
-  bool Init(CBC_ReedSolomonGF256* field,
-            const std::vector<int32_t>* coefficients);
+
+  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;