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

Side by Side Diff: core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp

Issue 1540263003: Add ContainsKey() and ContainsValue() and use them where appropriate. (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: rebase Created 4 years, 12 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/include/fpdfapi/fpdf_parser.h" 7 #include "core/include/fpdfapi/fpdf_parser.h"
8 8
9 #include "core/include/fxcrt/fx_string.h" 9 #include "core/include/fxcrt/fx_string.h"
10 #include "third_party/base/stl_util.h"
10 11
11 namespace { 12 namespace {
12 13
13 const FX_DWORD kBlockSize = 1024; 14 const FX_DWORD kBlockSize = 1024;
14 15
15 } // namespace 16 } // namespace
16 17
17 // static 18 // static
18 int CPDF_Object::s_nCurRefDepth = 0; 19 int CPDF_Object::s_nCurRefDepth = 0;
19 20
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 FX_DWORD streamSize = acc.GetSize(); 278 FX_DWORD streamSize = acc.GetSize();
278 CPDF_Dictionary* pDict = pThis->GetDict(); 279 CPDF_Dictionary* pDict = pThis->GetDict();
279 if (pDict) { 280 if (pDict) {
280 pDict = ToDictionary(pDict->CloneInternal(bDirect, visited)); 281 pDict = ToDictionary(pDict->CloneInternal(bDirect, visited));
281 } 282 }
282 return new CPDF_Stream(acc.DetachData(), streamSize, pDict); 283 return new CPDF_Stream(acc.DetachData(), streamSize, pDict);
283 } 284 }
284 case PDFOBJ_REFERENCE: { 285 case PDFOBJ_REFERENCE: {
285 const CPDF_Reference* pRef = AsReference(); 286 const CPDF_Reference* pRef = AsReference();
286 FX_DWORD obj_num = pRef->GetRefObjNum(); 287 FX_DWORD obj_num = pRef->GetRefObjNum();
287 if (bDirect && visited->find(obj_num) == visited->end()) { 288 if (bDirect && !pdfium::ContainsKey(*visited, obj_num)) {
288 visited->insert(obj_num); 289 visited->insert(obj_num);
289 if (!pRef->GetDirect()) 290 auto* pDirect = pRef->GetDirect();
290 return nullptr; 291 return pDirect ? pDirect->CloneInternal(TRUE, visited) : nullptr;
291
292 return pRef->GetDirect()->CloneInternal(TRUE, visited);
293 } 292 }
294 return new CPDF_Reference(pRef->m_pObjList, obj_num); 293 return new CPDF_Reference(pRef->m_pObjList, obj_num);
295 } 294 }
296 } 295 }
297 return NULL; 296 return NULL;
298 } 297 }
299 CPDF_Object* CPDF_Object::CloneRef(CPDF_IndirectObjects* pDoc) const { 298 CPDF_Object* CPDF_Object::CloneRef(CPDF_IndirectObjects* pDoc) const {
300 if (m_ObjNum) { 299 if (m_ObjNum) {
301 return new CPDF_Reference(pDoc, m_ObjNum); 300 return new CPDF_Reference(pDoc, m_ObjNum);
302 } 301 }
(...skipping 867 matching lines...) Expand 10 before | Expand all | Expand 10 after
1170 } 1169 }
1171 pObj->m_ObjNum = objnum; 1170 pObj->m_ObjNum = objnum;
1172 m_IndirectObjs.SetAt((void*)(uintptr_t)objnum, pObj); 1171 m_IndirectObjs.SetAt((void*)(uintptr_t)objnum, pObj);
1173 if (m_LastObjNum < objnum) 1172 if (m_LastObjNum < objnum)
1174 m_LastObjNum = objnum; 1173 m_LastObjNum = objnum;
1175 return TRUE; 1174 return TRUE;
1176 } 1175 }
1177 FX_DWORD CPDF_IndirectObjects::GetLastObjNum() const { 1176 FX_DWORD CPDF_IndirectObjects::GetLastObjNum() const {
1178 return m_LastObjNum; 1177 return m_LastObjNum;
1179 } 1178 }
OLDNEW
« no previous file with comments | « core/src/fpdfapi/fpdf_font/ttgsubtable.cpp ('k') | core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698