| Index: core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
|
| diff --git a/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp b/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
|
| index c20a483764ae1651242186f00e012e6e52e2e886..eb3f156b2db074b86b1590f944666d4a7e729ac3 100644
|
| --- a/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
|
| +++ b/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
|
| @@ -1233,13 +1233,12 @@ int32_t CPDF_Creator::WriteOldIndirectObject(uint32_t objnum) {
|
| return 0;
|
|
|
| m_ObjectOffset[objnum] = m_Offset;
|
| - FX_BOOL bExistInMap =
|
| - pdfium::ContainsKey(m_pDocument->m_IndirectObjs, objnum);
|
| + FX_BOOL bExistInMap = !!m_pDocument->GetIndirectObject(objnum);
|
| const uint8_t object_type = m_pParser->GetObjectType(objnum);
|
| bool bObjStm = (object_type == 2) && m_pEncryptDict && !m_pXRefStream;
|
| if (m_pParser->IsVersionUpdated() || m_bSecurityChanged || bExistInMap ||
|
| bObjStm) {
|
| - CPDF_Object* pObj = m_pDocument->GetIndirectObject(objnum);
|
| + CPDF_Object* pObj = m_pDocument->GetOrParseIndirectObject(objnum);
|
| if (!pObj) {
|
| m_ObjectOffset[objnum] = 0;
|
| return 0;
|
| @@ -1320,13 +1319,13 @@ int32_t CPDF_Creator::WriteNewObjs(FX_BOOL bIncremental, IFX_Pause* pPause) {
|
| int32_t index = (int32_t)(uintptr_t)m_Pos;
|
| while (index < iCount) {
|
| uint32_t objnum = m_NewObjNumArray.ElementAt(index);
|
| - auto it = m_pDocument->m_IndirectObjs.find(objnum);
|
| - if (it == m_pDocument->m_IndirectObjs.end()) {
|
| + CPDF_Object* pObj = m_pDocument->GetIndirectObject(objnum);
|
| + if (!pObj) {
|
| ++index;
|
| continue;
|
| }
|
| m_ObjectOffset[objnum] = m_Offset;
|
| - if (WriteIndirectObj(it->second)) {
|
| + if (WriteIndirectObj(pObj)) {
|
| return -1;
|
| }
|
| index++;
|
| @@ -1363,7 +1362,7 @@ 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;
|
| - for (const auto& pair : m_pDocument->m_IndirectObjs) {
|
| + for (const auto& pair : *m_pDocument) {
|
| const uint32_t objnum = pair.first;
|
| const CPDF_Object* pObj = pair.second;
|
| if (bIncremental || pObj->GetObjNum() == CPDF_Object::kInvalidObjNum)
|
| @@ -1703,7 +1702,7 @@ int32_t CPDF_Creator::WriteDoc_Stage4(IFX_Pause* pPause) {
|
| return -1;
|
| }
|
| } else {
|
| - if (m_File.AppendDWord(m_pDocument->m_LastObjNum + 1) < 0) {
|
| + if (m_File.AppendDWord(m_pDocument->GetLastObjNum() + 1) < 0) {
|
| return -1;
|
| }
|
| if (m_File.AppendString(" 0 obj <<") < 0) {
|
|
|