void CPDF_IndirectObjectHolder::ReleaseIndirectObject(uint32_t objnum) { CPDF_Object* pObj = GetIndirectObject(objnum); if (!pObj || pObj->GetObjNum() == CPDF_Object::kInvalidObjNum) return; pObj->Destroy(); m_IndirectObjs.erase(objnum); }
bool CPDF_IndirectObjectHolder::ReplaceIndirectObjectIfHigherGeneration( uint32_t objnum, CPDF_Object* pObj) { if (!objnum || !pObj) return false; CPDF_Object* pOldObj = GetIndirectObject(objnum); if (pOldObj) { if (pObj->GetGenNum() <= pOldObj->GetGenNum()) { pObj->Destroy(); return false; } pOldObj->Destroy(); } pObj->m_ObjNum = objnum; m_IndirectObjs[objnum] = pObj; m_LastObjNum = std::max(m_LastObjNum, objnum); return true; }