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

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

Issue 2194853002: Cleanup CPDF_DocPageData release methods and callers. (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: Created 4 years, 4 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/fpdfapi/fpdf_page/fpdf_page_parser.cpp ('k') | core/fpdfapi/fpdf_page/pageint.h » ('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 "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 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 pParam = pDict->GetDictBy("DecodeParms"); 153 pParam = pDict->GetDictBy("DecodeParms");
154 } 154 }
155 } 155 }
156 uint32_t width = pDict->GetIntegerBy("Width"); 156 uint32_t width = pDict->GetIntegerBy("Width");
157 uint32_t height = pDict->GetIntegerBy("Height"); 157 uint32_t height = pDict->GetIntegerBy("Height");
158 uint32_t OrigSize = 0; 158 uint32_t OrigSize = 0;
159 if (pCSObj) { 159 if (pCSObj) {
160 uint32_t bpc = pDict->GetIntegerBy("BitsPerComponent"); 160 uint32_t bpc = pDict->GetIntegerBy("BitsPerComponent");
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;
165 } else {
166 nComponents = pCS->CountComponents(); 164 nComponents = pCS->CountComponents();
167 pDoc->GetPageData()->ReleaseColorSpace(pCSObj); 165 pDoc->GetPageData()->ReleaseColorSpace(pCSObj);
166 } else {
167 nComponents = 3;
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 nullptr; 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 nullptr; 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 nullptr; 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 nullptr; 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 nullptr; 191 return nullptr;
192 } 192
193 OrigSize *= height; 193 OrigSize *= height;
194 uint8_t* pData = nullptr; 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;
(...skipping 617 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/pageint.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698