diff options
author | tsepez <tsepez@chromium.org> | 2016-04-14 11:04:57 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-04-14 11:04:57 -0700 |
commit | 7b1ccf9697692844e764d730079a0f0b98fd6d06 (patch) | |
tree | 8e1c0b669a8dd1e06de50454b4e5db5e7c6e1a2a /core/fpdfapi/fpdf_page | |
parent | 774bdde253b8394aa2ac791e273508ff006d813a (diff) | |
download | pdfium-7b1ccf9697692844e764d730079a0f0b98fd6d06.tar.xz |
Make CPDF_Dictionary methods take CFX_ByteString arguments
This will help avoid duplicate allocation of CFX_ByteStrings
when the caller already has one. It may seem counter-intuitive
that requiring the caller to pass an allocated CFX_ByteString
rather than a static CFX_ByteStringC would improve the situation,
but due to the idiosyncrasies of std::map, the CPDF_Dictionary
methods must always do an allocation under the covers which
can't be avoided.
The changed callers in this CL are places where we would
previously demote to CFX_ByteStringC and then allocate a
a duplicate CFX_ByteString in the dictionary method.
Review URL: https://codereview.chromium.org/1889863002
Diffstat (limited to 'core/fpdfapi/fpdf_page')
-rw-r--r-- | core/fpdfapi/fpdf_page/fpdf_page_doc.cpp | 2 | ||||
-rw-r--r-- | core/fpdfapi/fpdf_page/fpdf_page_parser.cpp | 16 | ||||
-rw-r--r-- | core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp | 2 |
3 files changed, 10 insertions, 10 deletions
diff --git a/core/fpdfapi/fpdf_page/fpdf_page_doc.cpp b/core/fpdfapi/fpdf_page/fpdf_page_doc.cpp index 6cd66185c6..b9019f8577 100644 --- a/core/fpdfapi/fpdf_page/fpdf_page_doc.cpp +++ b/core/fpdfapi/fpdf_page/fpdf_page_doc.cpp @@ -331,7 +331,7 @@ CPDF_ColorSpace* CPDF_DocPageData::GetColorSpace( if (!pCS && pResources) { CPDF_Dictionary* pList = pResources->GetDictBy("ColorSpace"); if (pList) { - pCSObj = pList->GetDirectObjectBy(name.AsStringC()); + pCSObj = pList->GetDirectObjectBy(name); return GetColorSpace(pCSObj, nullptr); } } diff --git a/core/fpdfapi/fpdf_page/fpdf_page_parser.cpp b/core/fpdfapi/fpdf_page/fpdf_page_parser.cpp index 654c9350a9..d2889d89b1 100644 --- a/core/fpdfapi/fpdf_page/fpdf_page_parser.cpp +++ b/core/fpdfapi/fpdf_page/fpdf_page_parser.cpp @@ -566,9 +566,9 @@ void CPDF_StreamContentParser::Handle_BeginImage() { if (!key.IsEmpty()) { uint32_t dwObjNum = pObj ? pObj->GetObjNum() : 0; if (dwObjNum) - pDict->SetAtReference(key.AsStringC(), m_pDocument, dwObjNum); + pDict->SetAtReference(key, m_pDocument, dwObjNum); else - pDict->SetAt(key.AsStringC(), pObj.release()); + pDict->SetAt(key, pObj.release()); } } PDF_ReplaceAbbr(pDict); @@ -721,7 +721,7 @@ void CPDF_StreamContentParser::Handle_ExecuteXObject() { pList = m_pPageResources->GetDictBy("XObject"); if (!pList) return; - CPDF_Reference* pRes = ToReference(pList->GetObjectBy(name.AsStringC())); + CPDF_Reference* pRes = ToReference(pList->GetObjectBy(name)); if (!pRes) return; @@ -1258,7 +1258,7 @@ CPDF_Object* CPDF_StreamContentParser::FindResourceObj( if (!pList) { return NULL; } - CPDF_Object* pRes = pList->GetDirectObjectBy(name.AsStringC()); + CPDF_Object* pRes = pList->GetDirectObjectBy(name); return pRes; } CPDF_Dictionary* pList = m_pResources->GetDictBy(type); @@ -1270,10 +1270,10 @@ CPDF_Object* CPDF_StreamContentParser::FindResourceObj( if (!pList) { return NULL; } - CPDF_Object* pRes = pList->GetDirectObjectBy(name.AsStringC()); + CPDF_Object* pRes = pList->GetDirectObjectBy(name); return pRes; } - CPDF_Object* pRes = pList->GetDirectObjectBy(name.AsStringC()); + CPDF_Object* pRes = pList->GetDirectObjectBy(name); return pRes; } @@ -1794,9 +1794,9 @@ void PDF_ReplaceAbbr(CPDF_Object* pObj) { } for (const auto& op : replacements) { if (op.is_replace_key) - pDict->ReplaceKey(op.key.AsStringC(), op.replacement); + pDict->ReplaceKey(op.key, op.replacement); else - pDict->SetAtName(op.key.AsStringC(), op.replacement); + pDict->SetAtName(op.key, op.replacement); } break; } diff --git a/core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp b/core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp index 48bb667ec7..940881bacb 100644 --- a/core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp +++ b/core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp @@ -427,7 +427,7 @@ CPDF_Object* CPDF_StreamParser::ReadNextObject(FX_BOOL bAllowNestedArray, return nullptr; } if (!key.IsEmpty()) { - pDict->SetAt(key.AsStringC(), pObj); + pDict->SetAt(key, pObj); } else { pObj->Release(); } |