| Index: core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
|
| diff --git a/core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp b/core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
|
| index 65bb3d985ed78cdaaa105e7ed60ec8e819540337..1ffcfbf0a3a2033fab001a838d18b1b068fee245 100644
|
| --- a/core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
|
| +++ b/core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
|
| @@ -11,6 +11,7 @@
|
| #include "core/include/fxcrt/fx_ext.h"
|
| #include "core/include/fpdfapi/fpdf_serial.h"
|
| #include "core/include/fpdfapi/fpdf_parser.h"
|
| +#include "third_party/base/stl_util.h"
|
|
|
| #define PDF_OBJECTSTREAM_MAXLENGTH (256 * 1024)
|
| #define PDF_XREFSTREAM_MAXSIZE 10000
|
| @@ -1283,9 +1284,8 @@ int32_t CPDF_Creator::WriteOldIndirectObject(FX_DWORD objnum) {
|
| return 0;
|
| }
|
| m_ObjectOffset[objnum] = m_Offset;
|
| - void* valuetemp = NULL;
|
| FX_BOOL bExistInMap =
|
| - m_pDocument->m_IndirectObjs.Lookup((void*)(uintptr_t)objnum, valuetemp);
|
| + pdfium::ContainsKey(m_pDocument->m_IndirectObjs, objnum);
|
| FX_BOOL bObjStm =
|
| (m_pParser->m_V5Type[objnum] == 2) && m_pEncryptDict && !m_pXRefStream;
|
| if (m_pParser->m_bVersionUpdated || m_bSecurityChanged || bExistInMap ||
|
| @@ -1371,14 +1371,13 @@ int32_t CPDF_Creator::WriteNewObjs(FX_BOOL bIncremental, IFX_Pause* pPause) {
|
| int32_t index = (int32_t)(uintptr_t)m_Pos;
|
| while (index < iCount) {
|
| FX_DWORD objnum = m_NewObjNumArray.ElementAt(index);
|
| - CPDF_Object* pObj = NULL;
|
| - m_pDocument->m_IndirectObjs.Lookup((void*)(uintptr_t)objnum, (void*&)pObj);
|
| - if (NULL == pObj) {
|
| + auto it = m_pDocument->m_IndirectObjs.find(objnum);
|
| + if (it == m_pDocument->m_IndirectObjs.end()) {
|
| ++index;
|
| continue;
|
| }
|
| m_ObjectOffset[objnum] = m_Offset;
|
| - if (WriteIndirectObj(pObj)) {
|
| + if (WriteIndirectObj(it->second)) {
|
| return -1;
|
| }
|
| index++;
|
| @@ -1416,24 +1415,17 @@ void CPDF_Creator::InitOldObjNumOffsets() {
|
| void CPDF_Creator::InitNewObjNumOffsets() {
|
| FX_BOOL bIncremental = (m_dwFlags & FPDFCREATE_INCREMENTAL) != 0;
|
| FX_BOOL bNoOriginal = (m_dwFlags & FPDFCREATE_NO_ORIGINAL) != 0;
|
| - FX_POSITION pos = m_pDocument->m_IndirectObjs.GetStartPosition();
|
| - while (pos) {
|
| - size_t key = 0;
|
| - CPDF_Object* pObj;
|
| - m_pDocument->m_IndirectObjs.GetNextAssoc(pos, (void*&)key, (void*&)pObj);
|
| - FX_DWORD objnum = (FX_DWORD)key;
|
| - if (pObj->GetObjNum() == -1) {
|
| + for (const auto& pair : m_pDocument->m_IndirectObjs) {
|
| + if (pair.second->GetObjNum() == -1)
|
| continue;
|
| - }
|
| if (bIncremental) {
|
| - if (!pObj->IsModified()) {
|
| + if (!pair.second->IsModified())
|
| continue;
|
| - }
|
| - } else if (m_pParser && m_pParser->IsValidObjectNumber(objnum) &&
|
| - m_pParser->m_V5Type[objnum]) {
|
| + } else if (m_pParser && m_pParser->IsValidObjectNumber(pair.first) &&
|
| + m_pParser->m_V5Type[pair.first]) {
|
| continue;
|
| }
|
| - AppendNewObjNum(objnum);
|
| + AppendNewObjNum(pair.first);
|
| }
|
| int32_t iCount = m_NewObjNumArray.GetSize();
|
| if (iCount == 0) {
|
|
|