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

Side by Side Diff: core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp

Issue 2032613003: Get rid of NULLs in core/ (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: Fix a bad merge Created 4 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
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 "core/fpdfapi/fpdf_page/pageint.h" 7 #include "core/fpdfapi/fpdf_page/pageint.h"
8 8
9 #include <limits.h> 9 #include <limits.h>
10 10
(...skipping 25 matching lines...) Expand all
36 const uint32_t kMaxNestedArrayLevel = 512; 36 const uint32_t kMaxNestedArrayLevel = 512;
37 const uint32_t kMaxWordBuffer = 256; 37 const uint32_t kMaxWordBuffer = 256;
38 const FX_STRSIZE kMaxStringLength = 32767; 38 const FX_STRSIZE kMaxStringLength = 32767;
39 39
40 } // namespace 40 } // namespace
41 41
42 CPDF_StreamParser::CPDF_StreamParser(const uint8_t* pData, uint32_t dwSize) { 42 CPDF_StreamParser::CPDF_StreamParser(const uint8_t* pData, uint32_t dwSize) {
43 m_pBuf = pData; 43 m_pBuf = pData;
44 m_Size = dwSize; 44 m_Size = dwSize;
45 m_Pos = 0; 45 m_Pos = 0;
46 m_pLastObj = NULL; 46 m_pLastObj = nullptr;
47 } 47 }
48 48
49 CPDF_StreamParser::~CPDF_StreamParser() { 49 CPDF_StreamParser::~CPDF_StreamParser() {
50 if (m_pLastObj) { 50 if (m_pLastObj) {
51 m_pLastObj->Release(); 51 m_pLastObj->Release();
52 } 52 }
53 } 53 }
54 54
55 uint32_t DecodeAllScanlines(CCodec_ScanlineDecoder* pDecoder, 55 uint32_t DecodeAllScanlines(CCodec_ScanlineDecoder* pDecoder,
56 uint8_t*& dest_buf, 56 uint8_t*& dest_buf,
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 uint32_t nComponents = 1; 161 uint32_t nComponents = 1;
162 CPDF_ColorSpace* pCS = pDoc->LoadColorSpace(pCSObj); 162 CPDF_ColorSpace* pCS = pDoc->LoadColorSpace(pCSObj);
163 if (!pCS) { 163 if (!pCS) {
164 nComponents = 3; 164 nComponents = 3;
165 } else { 165 } else {
166 nComponents = pCS->CountComponents(); 166 nComponents = pCS->CountComponents();
167 pDoc->GetPageData()->ReleaseColorSpace(pCSObj); 167 pDoc->GetPageData()->ReleaseColorSpace(pCSObj);
168 } 168 }
169 uint32_t pitch = width; 169 uint32_t pitch = width;
170 if (bpc && pitch > INT_MAX / bpc) { 170 if (bpc && pitch > INT_MAX / bpc) {
171 return NULL; 171 return nullptr;
172 } 172 }
173 pitch *= bpc; 173 pitch *= bpc;
174 if (nComponents && pitch > INT_MAX / nComponents) { 174 if (nComponents && pitch > INT_MAX / nComponents) {
175 return NULL; 175 return nullptr;
176 } 176 }
177 pitch *= nComponents; 177 pitch *= nComponents;
178 if (pitch > INT_MAX - 7) { 178 if (pitch > INT_MAX - 7) {
179 return NULL; 179 return nullptr;
180 } 180 }
181 pitch += 7; 181 pitch += 7;
182 pitch /= 8; 182 pitch /= 8;
183 OrigSize = pitch; 183 OrigSize = pitch;
184 } else { 184 } else {
185 if (width > INT_MAX - 7) { 185 if (width > INT_MAX - 7) {
186 return NULL; 186 return nullptr;
187 } 187 }
188 OrigSize = ((width + 7) / 8); 188 OrigSize = ((width + 7) / 8);
189 } 189 }
190 if (height && OrigSize > INT_MAX / height) { 190 if (height && OrigSize > INT_MAX / height) {
191 return NULL; 191 return nullptr;
192 } 192 }
193 OrigSize *= height; 193 OrigSize *= height;
194 uint8_t* pData = NULL; 194 uint8_t* pData = nullptr;
195 uint32_t dwStreamSize; 195 uint32_t dwStreamSize;
196 if (Decoder.IsEmpty()) { 196 if (Decoder.IsEmpty()) {
197 if (OrigSize > m_Size - m_Pos) { 197 if (OrigSize > m_Size - m_Pos) {
198 OrigSize = m_Size - m_Pos; 198 OrigSize = m_Size - m_Pos;
199 } 199 }
200 pData = FX_Alloc(uint8_t, OrigSize); 200 pData = FX_Alloc(uint8_t, OrigSize);
201 FXSYS_memcpy(pData, m_pBuf + m_Pos, OrigSize); 201 FXSYS_memcpy(pData, m_pBuf + m_Pos, OrigSize);
202 dwStreamSize = OrigSize; 202 dwStreamSize = OrigSize;
203 m_Pos += OrigSize; 203 m_Pos += OrigSize;
204 } else { 204 } else {
205 uint32_t dwDestSize = OrigSize; 205 uint32_t dwDestSize = OrigSize;
206 dwStreamSize = 206 dwStreamSize =
207 PDF_DecodeInlineStream(m_pBuf + m_Pos, m_Size - m_Pos, width, height, 207 PDF_DecodeInlineStream(m_pBuf + m_Pos, m_Size - m_Pos, width, height,
208 Decoder, pParam, pData, dwDestSize); 208 Decoder, pParam, pData, dwDestSize);
209 FX_Free(pData); 209 FX_Free(pData);
210 if ((int)dwStreamSize < 0) 210 if ((int)dwStreamSize < 0)
211 return NULL; 211 return nullptr;
212 212
213 uint32_t dwSavePos = m_Pos; 213 uint32_t dwSavePos = m_Pos;
214 m_Pos += dwStreamSize; 214 m_Pos += dwStreamSize;
215 while (1) { 215 while (1) {
216 uint32_t dwPrevPos = m_Pos; 216 uint32_t dwPrevPos = m_Pos;
217 CPDF_StreamParser::SyntaxType type = ParseNextElement(); 217 CPDF_StreamParser::SyntaxType type = ParseNextElement();
218 if (type == CPDF_StreamParser::EndOfData) 218 if (type == CPDF_StreamParser::EndOfData)
219 break; 219 break;
220 220
221 if (type != CPDF_StreamParser::Keyword) { 221 if (type != CPDF_StreamParser::Keyword) {
(...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 if (ClipPath.NotNull()) { 707 if (ClipPath.NotNull()) {
708 m_pParser->GetCurStates()->m_ClipPath.AppendPath(ClipPath, FXFILL_WINDING, 708 m_pParser->GetCurStates()->m_ClipPath.AppendPath(ClipPath, FXFILL_WINDING,
709 TRUE); 709 TRUE);
710 } 710 }
711 if (pForm->m_Transparency & PDFTRANS_GROUP) { 711 if (pForm->m_Transparency & PDFTRANS_GROUP) {
712 CPDF_GeneralStateData* pData = 712 CPDF_GeneralStateData* pData =
713 m_pParser->GetCurStates()->m_GeneralState.GetModify(); 713 m_pParser->GetCurStates()->m_GeneralState.GetModify();
714 pData->m_BlendType = FXDIB_BLEND_NORMAL; 714 pData->m_BlendType = FXDIB_BLEND_NORMAL;
715 pData->m_StrokeAlpha = 1.0f; 715 pData->m_StrokeAlpha = 1.0f;
716 pData->m_FillAlpha = 1.0f; 716 pData->m_FillAlpha = 1.0f;
717 pData->m_pSoftMask = NULL; 717 pData->m_pSoftMask = nullptr;
718 } 718 }
719 m_nStreams = 0; 719 m_nStreams = 0;
720 m_pSingleStream.reset(new CPDF_StreamAcc); 720 m_pSingleStream.reset(new CPDF_StreamAcc);
721 m_pSingleStream->LoadAllData(pForm->m_pFormStream, FALSE); 721 m_pSingleStream->LoadAllData(pForm->m_pFormStream, FALSE);
722 m_pData = (uint8_t*)m_pSingleStream->GetData(); 722 m_pData = (uint8_t*)m_pSingleStream->GetData();
723 m_Size = m_pSingleStream->GetSize(); 723 m_Size = m_pSingleStream->GetSize();
724 m_Status = ToBeContinued; 724 m_Status = ToBeContinued;
725 m_InternalStage = STAGE_PARSE; 725 m_InternalStage = STAGE_PARSE;
726 m_CurrentOffset = 0; 726 m_CurrentOffset = 0;
727 } 727 }
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
820 } 820 }
821 m_Status = Done; 821 m_Status = Done;
822 return; 822 return;
823 } 823 }
824 steps++; 824 steps++;
825 if (pPause && pPause->NeedToPauseNow()) { 825 if (pPause && pPause->NeedToPauseNow()) {
826 break; 826 break;
827 } 827 }
828 } 828 }
829 } 829 }
OLDNEW
« no previous file with comments | « core/fpdfapi/fpdf_page/fpdf_page_parser.cpp ('k') | core/fpdfapi/fpdf_page/include/cpdf_colorspace.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698