Chromium Code Reviews| Index: core/include/fxcrt/fx_basic.h |
| diff --git a/core/include/fxcrt/fx_basic.h b/core/include/fxcrt/fx_basic.h |
| index 018a91462e5ea61c57fce4bf1149eae496349fe8..7987a92b96fa3da6a0e31f1ff0bf449346dc4f5a 100644 |
| --- a/core/include/fxcrt/fx_basic.h |
| +++ b/core/include/fxcrt/fx_basic.h |
| @@ -576,33 +576,24 @@ class CFX_SegmentedArray : public CFX_BaseSegmentedArray { |
| } |
| }; |
| #endif // PDF_ENABLE_XFA |
| + |
| template <class DataType, int FixedSize> |
| class CFX_FixedBufGrow { |
| public: |
| - CFX_FixedBufGrow() : m_pData(NULL) {} |
| - CFX_FixedBufGrow(int data_size) : m_pData(NULL) { |
| - if (data_size > FixedSize) { |
| - m_pData = FX_Alloc(DataType, data_size); |
| - } else { |
| - FXSYS_memset(m_Data, 0, sizeof(DataType) * FixedSize); |
| - } |
| - } |
| - void SetDataSize(int data_size) { |
| - FX_Free(m_pData); |
| - m_pData = NULL; |
| + CFX_FixedBufGrow(int data_size) { |
|
Lei Zhang
2016/02/19 23:57:25
explicit
Tom Sepez
2016/02/20 00:27:47
Done.
|
| if (data_size > FixedSize) { |
| - m_pData = FX_Alloc(DataType, data_size); |
| - } else { |
| - FXSYS_memset(m_Data, 0, sizeof(DataType) * FixedSize); |
| + m_pGrowData.reset(FX_Alloc(DataType, data_size)); |
| + return; |
| } |
| + FXSYS_memset(m_FixedData, 0, sizeof(DataType) * FixedSize); |
| } |
| - ~CFX_FixedBufGrow() { FX_Free(m_pData); } |
| - operator DataType*() { return m_pData ? m_pData : m_Data; } |
| + operator DataType*() { return m_pGrowData ? m_pGrowData.get() : m_FixedData; } |
| private: |
| - DataType m_Data[FixedSize]; |
| - DataType* m_pData; |
| + DataType m_FixedData[FixedSize]; |
| + std::unique_ptr<DataType, FxFreeDeleter> m_pGrowData; |
| }; |
| + |
| #ifdef PDF_ENABLE_XFA |
| class CFX_MapPtrToPtr { |
| protected: |