Make CFX_BasicArray non-copyable.

Its implicit copy constructor is unsafe, since it ends up
sharing the underlying data.  Fix one place where it was
being unintentionally invoked.

Review URL: https://codereview.chromium.org/1908073003
diff --git a/core/fxcrt/include/fx_basic.h b/core/fxcrt/include/fx_basic.h
index 5a577c2..676996c 100644
--- a/core/fxcrt/include/fx_basic.h
+++ b/core/fxcrt/include/fx_basic.h
@@ -231,32 +231,24 @@
 class CFX_BasicArray {
  protected:
   CFX_BasicArray(int unit_size);
-
+  CFX_BasicArray(const CFX_BasicArray&) = delete;
   ~CFX_BasicArray();
 
   FX_BOOL SetSize(int nNewSize);
-
   FX_BOOL Append(const CFX_BasicArray& src);
-
   FX_BOOL Copy(const CFX_BasicArray& src);
-
   uint8_t* InsertSpaceAt(int nIndex, int nCount);
-
   FX_BOOL RemoveAt(int nIndex, int nCount);
-
   FX_BOOL InsertAt(int nStartIndex, const CFX_BasicArray* pNewArray);
-
   const void* GetDataPtr(int index) const;
 
  protected:
   uint8_t* m_pData;
-
   int m_nSize;
-
   int m_nMaxSize;
-
   int m_nUnitSize;
 };
+
 template <class TYPE>
 class CFX_ArrayTemplate : public CFX_BasicArray {
  public:
diff --git a/xfa/fxbarcode/datamatrix/BC_DataMatrixDecodedBitStreamParser.cpp b/xfa/fxbarcode/datamatrix/BC_DataMatrixDecodedBitStreamParser.cpp
index 693b6b9..88a52b9 100644
--- a/xfa/fxbarcode/datamatrix/BC_DataMatrixDecodedBitStreamParser.cpp
+++ b/xfa/fxbarcode/datamatrix/BC_DataMatrixDecodedBitStreamParser.cpp
@@ -48,6 +48,7 @@
 const int32_t CBC_DataMatrixDecodedBitStreamParser::BASE256_ENCODE = 6;
 CBC_DataMatrixDecodedBitStreamParser::CBC_DataMatrixDecodedBitStreamParser() {}
 CBC_DataMatrixDecodedBitStreamParser::~CBC_DataMatrixDecodedBitStreamParser() {}
+
 CBC_CommonDecoderResult* CBC_DataMatrixDecodedBitStreamParser::Decode(
     CFX_ByteArray& bytes,
     int32_t& e) {
@@ -59,32 +60,32 @@
   do {
     if (mode == 1) {
       mode = DecodeAsciiSegment(&bits, result, resultTrailer, e);
-      BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
+      BC_EXCEPTION_CHECK_ReturnValue(e, nullptr);
     } else {
       switch (mode) {
         case 2:
           DecodeC40Segment(&bits, result, e);
-          BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
+          BC_EXCEPTION_CHECK_ReturnValue(e, nullptr);
           break;
         case 3:
           DecodeTextSegment(&bits, result, e);
-          BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
+          BC_EXCEPTION_CHECK_ReturnValue(e, nullptr);
           break;
         case 4:
           DecodeAnsiX12Segment(&bits, result, e);
-          BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
+          BC_EXCEPTION_CHECK_ReturnValue(e, nullptr);
           break;
         case 5:
           DecodeEdifactSegment(&bits, result, e);
-          BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
+          BC_EXCEPTION_CHECK_ReturnValue(e, nullptr);
           break;
         case 6:
           DecodeBase256Segment(&bits, result, byteSegments, e);
-          BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
+          BC_EXCEPTION_CHECK_ReturnValue(e, nullptr);
           break;
         default:
           e = BCExceptionFormatException;
-          return NULL;
+          return nullptr;
       }
       mode = ASCII_ENCODE;
     }
@@ -93,12 +94,11 @@
     result += resultTrailer;
   }
   CBC_CommonDecoderResult* tempCp = new CBC_CommonDecoderResult();
-  tempCp->Init(bytes, result,
-               (byteSegments.GetSize() <= 0) ? CFX_Int32Array() : byteSegments,
-               NULL, e);
-  BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
+  tempCp->Init(bytes, result, byteSegments, nullptr, e);
+  BC_EXCEPTION_CHECK_ReturnValue(e, nullptr);
   return tempCp;
 }
+
 int32_t CBC_DataMatrixDecodedBitStreamParser::DecodeAsciiSegment(
     CBC_CommonBitSource* bits,
     CFX_ByteString& result,