| Index: core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
|
| diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
|
| index ad4038d71b3fb9a5b3bc2706dae1a75e3c12402f..fe20a92a5b9a1eed59baf12e469ab59e71ed42ec 100644
|
| --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
|
| +++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
|
| @@ -1156,25 +1156,26 @@ void CPDF_IndirectObjects::ReleaseIndirectObject(FX_DWORD objnum) {
|
| pValue->Destroy();
|
| m_IndirectObjs.RemoveKey((void*)(uintptr_t)objnum);
|
| }
|
| -void CPDF_IndirectObjects::InsertIndirectObject(FX_DWORD objnum,
|
| - CPDF_Object* pObj) {
|
| - if (objnum == 0 || pObj == NULL) {
|
| - return;
|
| - }
|
| - void* value = NULL;
|
| +FX_BOOL CPDF_IndirectObjects::InsertIndirectObject(FX_DWORD objnum,
|
| + CPDF_Object* pObj) {
|
| + if (!objnum || !pObj)
|
| + return FALSE;
|
| + void* value = nullptr;
|
| if (m_IndirectObjs.Lookup((void*)(uintptr_t)objnum, value)) {
|
| if (value) {
|
| - CPDF_Object* pValue = static_cast<CPDF_Object*>(value);
|
| - if (pObj->GetGenNum() <= pValue->GetGenNum())
|
| - return;
|
| - pValue->Destroy();
|
| + CPDF_Object* pExistingObj = static_cast<CPDF_Object*>(value);
|
| + if (pObj->GetGenNum() <= pExistingObj->GetGenNum()) {
|
| + pObj->Destroy();
|
| + return FALSE;
|
| + }
|
| + pExistingObj->Destroy();
|
| }
|
| }
|
| pObj->m_ObjNum = objnum;
|
| m_IndirectObjs.SetAt((void*)(uintptr_t)objnum, pObj);
|
| - if (m_LastObjNum < objnum) {
|
| + if (m_LastObjNum < objnum)
|
| m_LastObjNum = objnum;
|
| - }
|
| + return TRUE;
|
| }
|
| FX_DWORD CPDF_IndirectObjects::GetLastObjNum() const {
|
| return m_LastObjNum;
|
|
|