diff options
author | tsepez <tsepez@chromium.org> | 2016-04-21 11:56:00 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-04-21 11:56:00 -0700 |
commit | d00a91229690e453cb7f2eed652d81e864b27d2a (patch) | |
tree | 912985ecfde20c7bddfad2bc69d303a73aa86ca0 | |
parent | ca612c1f9c47fae74dda493291d52ec27eff4a7b (diff) | |
download | pdfium-d00a91229690e453cb7f2eed652d81e864b27d2a.tar.xz |
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
-rw-r--r-- | core/fxcrt/include/fx_basic.h | 12 | ||||
-rw-r--r-- | xfa/fxbarcode/datamatrix/BC_DataMatrixDecodedBitStreamParser.cpp | 22 |
2 files changed, 13 insertions, 21 deletions
diff --git a/core/fxcrt/include/fx_basic.h b/core/fxcrt/include/fx_basic.h index 5a577c2e54..676996c5d5 100644 --- a/core/fxcrt/include/fx_basic.h +++ b/core/fxcrt/include/fx_basic.h @@ -231,32 +231,24 @@ class CFX_UTF8Encoder { 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 693b6b9209..88a52b9e74 100644 --- a/xfa/fxbarcode/datamatrix/BC_DataMatrixDecodedBitStreamParser.cpp +++ b/xfa/fxbarcode/datamatrix/BC_DataMatrixDecodedBitStreamParser.cpp @@ -48,6 +48,7 @@ const int32_t CBC_DataMatrixDecodedBitStreamParser::EDIFACT_ENCODE = 5; 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 @@ CBC_CommonDecoderResult* CBC_DataMatrixDecodedBitStreamParser::Decode( 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 @@ CBC_CommonDecoderResult* CBC_DataMatrixDecodedBitStreamParser::Decode( 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, |