| Index: xfa/fgas/crt/fgas_utils.cpp
|
| diff --git a/xfa/fgas/crt/fgas_utils.cpp b/xfa/fgas/crt/fgas_utils.cpp
|
| index 01792b833a91538a30f547c76bb565794c6e7e9c..4f15fc48452f15cd9f4bc9ec15eddfcde0a3c703 100644
|
| --- a/xfa/fgas/crt/fgas_utils.cpp
|
| +++ b/xfa/fgas/crt/fgas_utils.cpp
|
| @@ -141,9 +141,9 @@ CFX_BaseMassArrayImp::CFX_BaseMassArrayImp(int32_t iChunkSize,
|
| : m_iChunkSize(iChunkSize),
|
| m_iBlockSize(iBlockSize),
|
| m_iChunkCount(0),
|
| - m_iBlockCount(0) {
|
| + m_iBlockCount(0),
|
| + m_pData(new CFX_ArrayTemplate<void*>()) {
|
| ASSERT(m_iChunkSize > 0 && m_iBlockSize > 0);
|
| - m_pData = new CFX_PtrArray;
|
| m_pData->SetSize(16);
|
| }
|
| CFX_BaseMassArrayImp::~CFX_BaseMassArrayImp() {
|
| @@ -335,7 +335,7 @@ struct FX_BASEDISCRETEARRAYDATA {
|
| int32_t iBlockSize;
|
| int32_t iChunkSize;
|
| int32_t iChunkCount;
|
| - CFX_PtrArray ChunkBuffer;
|
| + CFX_ArrayTemplate<uint8_t*> ChunkBuffer;
|
| };
|
|
|
| CFX_BaseDiscreteArray::CFX_BaseDiscreteArray(int32_t iChunkSize,
|
| @@ -360,7 +360,7 @@ uint8_t* CFX_BaseDiscreteArray::AddSpaceTo(int32_t index) {
|
| uint8_t* pChunk = NULL;
|
| int32_t iChunk = index / iChunkSize;
|
| if (iChunk < iChunkCount) {
|
| - pChunk = (uint8_t*)pData->ChunkBuffer.GetAt(iChunk);
|
| + pChunk = pData->ChunkBuffer.GetAt(iChunk);
|
| }
|
| if (!pChunk) {
|
| pChunk = FX_Alloc2D(uint8_t, iChunkSize, pData->iBlockSize);
|
| @@ -373,30 +373,26 @@ uint8_t* CFX_BaseDiscreteArray::AddSpaceTo(int32_t index) {
|
| return pChunk + (index % iChunkSize) * pData->iBlockSize;
|
| }
|
| uint8_t* CFX_BaseDiscreteArray::GetAt(int32_t index) const {
|
| - ASSERT(index > -1);
|
| + ASSERT(index >= 0);
|
| FX_BASEDISCRETEARRAYDATA* pData = (FX_BASEDISCRETEARRAYDATA*)m_pData;
|
| int32_t iChunkSize = pData->iChunkSize;
|
| int32_t iChunk = index / iChunkSize;
|
| - if (iChunk >= pData->iChunkCount) {
|
| - return NULL;
|
| - }
|
| - uint8_t* pChunk = (uint8_t*)pData->ChunkBuffer.GetAt(iChunk);
|
| - if (pChunk == NULL) {
|
| - return NULL;
|
| - }
|
| + if (iChunk >= pData->iChunkCount)
|
| + return nullptr;
|
| +
|
| + uint8_t* pChunk = pData->ChunkBuffer.GetAt(iChunk);
|
| + if (!pChunk)
|
| + return nullptr;
|
| +
|
| return pChunk + (index % iChunkSize) * pData->iBlockSize;
|
| }
|
| void CFX_BaseDiscreteArray::RemoveAll() {
|
| FX_BASEDISCRETEARRAYDATA* pData = (FX_BASEDISCRETEARRAYDATA*)m_pData;
|
| - CFX_PtrArray& ChunkBuffer = pData->ChunkBuffer;
|
| + CFX_ArrayTemplate<uint8_t*>& ChunkBuffer = pData->ChunkBuffer;
|
| int32_t& iChunkCount = pData->iChunkCount;
|
| - for (int32_t i = 0; i < iChunkCount; i++) {
|
| - void* p = ChunkBuffer.GetAt(i);
|
| - if (p == NULL) {
|
| - continue;
|
| - }
|
| - FX_Free(p);
|
| - }
|
| + for (int32_t i = 0; i < iChunkCount; i++)
|
| + FX_Free(ChunkBuffer.GetAt(i));
|
| +
|
| ChunkBuffer.RemoveAll();
|
| iChunkCount = 0;
|
| }
|
|
|