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 07b1a208d733e9dc386b75bf0cfc233ceed73629..46875d88a52dbd72462f8aee5c7309de5710586a 100644 |
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp |
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp |
@@ -717,27 +717,24 @@ FX_BOOL CPDF_Dictionary::KeyExist(const CFX_ByteStringC& key) const { |
void* value; |
return m_Map.Lookup(key, value); |
} |
-void CPDF_Dictionary::SetAt(const CFX_ByteStringC& key, |
- CPDF_Object* pObj, |
- CPDF_IndirectObjects* pObjs) { |
- ASSERT(m_Type == PDFOBJ_DICTIONARY); |
- CPDF_Object* p = NULL; |
- m_Map.Lookup(key, (void*&)p); |
- if (p == pObj) { |
+ |
+void CPDF_Dictionary::SetAt(const CFX_ByteStringC& key, CPDF_Object* pObj) { |
+ ASSERT(IsDictionary()); |
+ void* pValue = nullptr; |
+ m_Map.Lookup(key, pValue); |
+ CPDF_Object* pExisting = static_cast<CPDF_Object*>(pValue); |
+ if (pExisting == pObj) |
return; |
- } |
- if (p) |
- p->Release(); |
- if (pObj) { |
- if (pObj->GetObjNum()) { |
- ASSERT(pObjs != NULL); |
- pObj = new CPDF_Reference(pObjs, pObj->GetObjNum()); |
- } |
+ |
+ if (pExisting) |
+ pExisting->Release(); |
+ |
+ if (pObj) |
m_Map.SetAt(key, pObj); |
- } else { |
+ else |
m_Map.RemoveKey(key); |
- } |
} |
+ |
void CPDF_Dictionary::AddValue(const CFX_ByteStringC& key, CPDF_Object* pObj) { |
ASSERT(m_Type == PDFOBJ_DICTIONARY); |
m_Map.AddValue(key, pObj); |