Index: core/fpdfapi/parser/cpdf_indirect_object_holder.cpp |
diff --git a/core/fpdfapi/parser/cpdf_indirect_object_holder.cpp b/core/fpdfapi/parser/cpdf_indirect_object_holder.cpp |
index 529eda21fb156424d73a5e3759a971aecd058092..12b1e9f0896fc8c1d969b094c3a045707f85a29b 100644 |
--- a/core/fpdfapi/parser/cpdf_indirect_object_holder.cpp |
+++ b/core/fpdfapi/parser/cpdf_indirect_object_holder.cpp |
@@ -43,13 +43,14 @@ std::unique_ptr<CPDF_Object> CPDF_IndirectObjectHolder::ParseIndirectObject( |
return nullptr; |
} |
-uint32_t CPDF_IndirectObjectHolder::AddIndirectObject(CPDF_Object* pObj) { |
+CPDF_Object* CPDF_IndirectObjectHolder::AddIndirectObject( |
+ std::unique_ptr<CPDF_Object> pObj) { |
CHECK(!pObj->m_ObjNum); |
- m_LastObjNum++; |
+ CPDF_Object* pUnowned = pObj.get(); |
+ pObj->m_ObjNum = ++m_LastObjNum; |
m_IndirectObjs[m_LastObjNum].release(); // TODO(tsepez): stop this leak. |
- m_IndirectObjs[m_LastObjNum].reset(pObj); |
- pObj->m_ObjNum = m_LastObjNum; |
- return m_LastObjNum; |
+ m_IndirectObjs[m_LastObjNum] = std::move(pObj); |
+ return pUnowned; |
} |
bool CPDF_IndirectObjectHolder::ReplaceIndirectObjectIfHigherGeneration( |