Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1808)

Unified Diff: core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp

Issue 1414963005: Remove default argument from CPDF_Dictionary::SetAt(). (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 fc473319fcea05ccb171a86c4fe99524a648c991..c352c5b6e633cc954a6452b1ce186f6ee5e1d79d 100644
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
@@ -738,27 +738,38 @@ 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) {
+ SetAtWithIndirect(key, pObj, nullptr);
+}
+
+void CPDF_Dictionary::SetAtWithIndirect(const CFX_ByteStringC& key,
+ CPDF_Object* pObj,
+ CPDF_IndirectObjects* pObjs) {
+ ASSERT(IsDictionary());
+ CPDF_Object* pExisting = nullptr;
+ m_Map.Lookup(key, (void*&)pExisting);
Tom Sepez 2015/10/24 16:50:01 nit: you know this cast is my favorite pet peeve .
Lei Zhang 2015/10/26 21:58:22 Done.
+ if (pExisting == pObj)
+ return;
+
+ if (pExisting)
+ pExisting->Release();
+
+ if (!pObj) {
+ m_Map.RemoveKey(key);
return;
}
- if (p)
- p->Release();
- if (pObj) {
- if (pObj->GetObjNum()) {
- ASSERT(pObjs != NULL);
- pObj = new CPDF_Reference(pObjs, pObj->GetObjNum());
- }
- m_Map.SetAt(key, pObj);
+
+ FX_DWORD dwObjNum = pObj->GetObjNum();
+ if (dwObjNum) {
+ ASSERT(pObjs);
+ m_Map.SetAt(key, new CPDF_Reference(pObjs, dwObjNum));
+ pObj->Release();
} else {
- m_Map.RemoveKey(key);
+ m_Map.SetAt(key, pObj);
}
}
+
void CPDF_Dictionary::AddValue(const CFX_ByteStringC& key, CPDF_Object* pObj) {
ASSERT(m_Type == PDFOBJ_DICTIONARY);
m_Map.AddValue(key, pObj);

Powered by Google App Engine
This is Rietveld 408576698