Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(697)

Side by Side Diff: core/src/fxcrt/fx_basic_array.cpp

Issue 1172793002: Merge to XFA: Use stdint.h types throughout PDFium. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/src/fxcrt/fx_arabic.cpp ('k') | core/src/fxcrt/fx_basic_bstring.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "../../include/fxcrt/fx_basic.h" 7 #include "../../include/fxcrt/fx_basic.h"
8 #include "../../../third_party/base/numerics/safe_math.h" 8 #include "../../../third_party/base/numerics/safe_math.h"
9 9
10 CFX_BasicArray::CFX_BasicArray(int unit_size) 10 CFX_BasicArray::CFX_BasicArray(int unit_size)
(...skipping 20 matching lines...) Expand all
31 return 0 == nNewSize; 31 return 0 == nNewSize;
32 } 32 }
33 33
34 if (m_pData == NULL) { 34 if (m_pData == NULL) {
35 pdfium::base::CheckedNumeric<int> totalSize = nNewSize; 35 pdfium::base::CheckedNumeric<int> totalSize = nNewSize;
36 totalSize *= m_nUnitSize; 36 totalSize *= m_nUnitSize;
37 if (!totalSize.IsValid()) { 37 if (!totalSize.IsValid()) {
38 m_nSize = m_nMaxSize = 0; 38 m_nSize = m_nMaxSize = 0;
39 return FALSE; 39 return FALSE;
40 } 40 }
41 m_pData = FX_Alloc(FX_BYTE, totalSize.ValueOrDie()); 41 m_pData = FX_Alloc(uint8_t, totalSize.ValueOrDie());
42 m_nSize = m_nMaxSize = nNewSize; 42 m_nSize = m_nMaxSize = nNewSize;
43 } else if (nNewSize <= m_nMaxSize) { 43 } else if (nNewSize <= m_nMaxSize) {
44 if (nNewSize > m_nSize) { 44 if (nNewSize > m_nSize) {
45 FXSYS_memset32(m_pData + m_nSize * m_nUnitSize, 0, (nNewSize - m_nSi ze) * m_nUnitSize); 45 FXSYS_memset32(m_pData + m_nSize * m_nUnitSize, 0, (nNewSize - m_nSi ze) * m_nUnitSize);
46 } 46 }
47 m_nSize = nNewSize; 47 m_nSize = nNewSize;
48 } else { 48 } else {
49 int nNewMax = nNewSize < m_nMaxSize ? m_nMaxSize : nNewSize; 49 int nNewMax = nNewSize < m_nMaxSize ? m_nMaxSize : nNewSize;
50 pdfium::base::CheckedNumeric<int> totalSize = nNewMax; 50 pdfium::base::CheckedNumeric<int> totalSize = nNewMax;
51 totalSize *= m_nUnitSize; 51 totalSize *= m_nUnitSize;
52 if (!totalSize.IsValid() || nNewMax < m_nSize) { 52 if (!totalSize.IsValid() || nNewMax < m_nSize) {
53 return FALSE; 53 return FALSE;
54 } 54 }
55 FX_LPBYTE pNewData = FX_Realloc(FX_BYTE, m_pData, totalSize.ValueOrDie() ); 55 FX_LPBYTE pNewData = FX_Realloc(uint8_t, m_pData, totalSize.ValueOrDie() );
56 if (pNewData == NULL) { 56 if (pNewData == NULL) {
57 return FALSE; 57 return FALSE;
58 } 58 }
59 FXSYS_memset32(pNewData + m_nSize * m_nUnitSize, 0, (nNewMax - m_nSize) * m_nUnitSize); 59 FXSYS_memset32(pNewData + m_nSize * m_nUnitSize, 0, (nNewMax - m_nSize) * m_nUnitSize);
60 m_pData = pNewData; 60 m_pData = pNewData;
61 m_nSize = nNewSize; 61 m_nSize = nNewSize;
62 m_nMaxSize = nNewMax; 62 m_nMaxSize = nNewMax;
63 } 63 }
64 return TRUE; 64 return TRUE;
65 } 65 }
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 _ClearIndex(m_IndexDepth, m_IndexSize, (void**)m_pIndex); 178 _ClearIndex(m_IndexDepth, m_IndexSize, (void**)m_pIndex);
179 m_pIndex = NULL; 179 m_pIndex = NULL;
180 m_IndexDepth = 0; 180 m_IndexDepth = 0;
181 m_DataSize = 0; 181 m_DataSize = 0;
182 } 182 }
183 void* CFX_BaseSegmentedArray::Add() 183 void* CFX_BaseSegmentedArray::Add()
184 { 184 {
185 if (m_DataSize % m_SegmentSize) { 185 if (m_DataSize % m_SegmentSize) {
186 return GetAt(m_DataSize ++); 186 return GetAt(m_DataSize ++);
187 } 187 }
188 void* pSegment = FX_Alloc2D(FX_BYTE, m_UnitSize, m_SegmentSize); 188 void* pSegment = FX_Alloc2D(uint8_t, m_UnitSize, m_SegmentSize);
189 if (m_pIndex == NULL) { 189 if (m_pIndex == NULL) {
190 m_pIndex = pSegment; 190 m_pIndex = pSegment;
191 m_DataSize ++; 191 m_DataSize ++;
192 return pSegment; 192 return pSegment;
193 } 193 }
194 if (m_IndexDepth == 0) { 194 if (m_IndexDepth == 0) {
195 void** pIndex = (void**)FX_Alloc(void*, m_IndexSize); 195 void** pIndex = (void**)FX_Alloc(void*, m_IndexSize);
196 pIndex[0] = m_pIndex; 196 pIndex[0] = m_pIndex;
197 pIndex[1] = pSegment; 197 pIndex[1] = pSegment;
198 m_pIndex = pIndex; 198 m_pIndex = pIndex;
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 int seg_index = index / m_SegmentSize; 308 int seg_index = index / m_SegmentSize;
309 return (FX_LPBYTE)GetIndex(seg_index)[seg_index % m_IndexSize] + (index % m_ SegmentSize) * m_UnitSize; 309 return (FX_LPBYTE)GetIndex(seg_index)[seg_index % m_IndexSize] + (index % m_ SegmentSize) * m_UnitSize;
310 } 310 }
311 void CFX_BaseSegmentedArray::Delete(int index, int count) 311 void CFX_BaseSegmentedArray::Delete(int index, int count)
312 { 312 {
313 if(index < 0 || count < 1 || index + count > m_DataSize) { 313 if(index < 0 || count < 1 || index + count > m_DataSize) {
314 return; 314 return;
315 } 315 }
316 int i; 316 int i;
317 for (i = index; i < m_DataSize - count; i ++) { 317 for (i = index; i < m_DataSize - count; i ++) {
318 FX_BYTE* pSrc = (FX_BYTE*)GetAt(i + count); 318 uint8_t* pSrc = (uint8_t*)GetAt(i + count);
319 FX_BYTE* pDest = (FX_BYTE*)GetAt(i); 319 uint8_t* pDest = (uint8_t*)GetAt(i);
320 for (int j = 0; j < m_UnitSize; j ++) { 320 for (int j = 0; j < m_UnitSize; j ++) {
321 pDest[j] = pSrc[j]; 321 pDest[j] = pSrc[j];
322 } 322 }
323 } 323 }
324 int new_segs = (m_DataSize - count + m_SegmentSize - 1) / m_SegmentSize; 324 int new_segs = (m_DataSize - count + m_SegmentSize - 1) / m_SegmentSize;
325 int old_segs = (m_DataSize + m_SegmentSize - 1) / m_SegmentSize; 325 int old_segs = (m_DataSize + m_SegmentSize - 1) / m_SegmentSize;
326 if (new_segs < old_segs) { 326 if (new_segs < old_segs) {
327 if(m_IndexDepth) { 327 if(m_IndexDepth) {
328 for (i = new_segs; i < old_segs; i ++) { 328 for (i = new_segs; i < old_segs; i ++) {
329 void** pIndex = GetIndex(i); 329 void** pIndex = GetIndex(i);
330 FX_Free(pIndex[i % m_IndexSize]); 330 FX_Free(pIndex[i % m_IndexSize]);
331 pIndex[i % m_IndexSize] = NULL; 331 pIndex[i % m_IndexSize] = NULL;
332 } 332 }
333 } else { 333 } else {
334 FX_Free(m_pIndex); 334 FX_Free(m_pIndex);
335 m_pIndex = NULL; 335 m_pIndex = NULL;
336 } 336 }
337 } 337 }
338 m_DataSize -= count; 338 m_DataSize -= count;
339 } 339 }
OLDNEW
« no previous file with comments | « core/src/fxcrt/fx_arabic.cpp ('k') | core/src/fxcrt/fx_basic_bstring.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698