CPDF_Object* CPDF_IndirectObjectHolder::GetOrParseIndirectObject( uint32_t objnum) { if (objnum == 0) return nullptr; CPDF_Object* pObj = GetIndirectObject(objnum); if (pObj) return pObj->GetObjNum() != CPDF_Object::kInvalidObjNum ? pObj : nullptr; std::unique_ptr<CPDF_Object> pNewObj = ParseIndirectObject(objnum); if (!pNewObj) return nullptr; pNewObj->m_ObjNum = objnum; m_LastObjNum = std::max(m_LastObjNum, objnum); m_IndirectObjs[objnum] = std::move(pNewObj); return m_IndirectObjs[objnum].get(); }
CPDF_Object* CPDF_IndirectObjectHolder::GetOrParseIndirectObject( uint32_t objnum) { if (objnum == 0) return nullptr; CPDF_Object* pObj = GetIndirectObject(objnum); if (pObj) return pObj->GetObjNum() != CPDF_Object::kInvalidObjNum ? pObj : nullptr; pObj = ParseIndirectObject(objnum); if (!pObj) return nullptr; pObj->m_ObjNum = objnum; m_LastObjNum = std::max(m_LastObjNum, objnum); if (m_IndirectObjs[objnum]) m_IndirectObjs[objnum]->Destroy(); m_IndirectObjs[objnum] = pObj; return pObj; }