From 7b1ccf9697692844e764d730079a0f0b98fd6d06 Mon Sep 17 00:00:00 2001 From: tsepez Date: Thu, 14 Apr 2016 11:04:57 -0700 Subject: 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 --- core/fpdfdoc/doc_ocg.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'core/fpdfdoc/doc_ocg.cpp') diff --git a/core/fpdfdoc/doc_ocg.cpp b/core/fpdfdoc/doc_ocg.cpp index b4fb3e1c01..bea3c2ce33 100644 --- a/core/fpdfdoc/doc_ocg.cpp +++ b/core/fpdfdoc/doc_ocg.cpp @@ -138,7 +138,7 @@ FX_BOOL CPDF_OCContext::LoadOCGStateFromConfig(const CFX_ByteStringC& csConfig, if (!pState) { continue; } - bState = pState->GetStringBy(csFind.AsStringC()) != "OFF"; + bState = pState->GetStringBy(csFind) != "OFF"; } } return bState; @@ -150,11 +150,11 @@ FX_BOOL CPDF_OCContext::LoadOCGState(const CPDF_Dictionary* pOCGDict) const { CFX_ByteString csState = FPDFDOC_OCG_GetUsageTypeString(m_eUsageType); CPDF_Dictionary* pUsage = pOCGDict->GetDictBy("Usage"); if (pUsage) { - CPDF_Dictionary* pState = pUsage->GetDictBy(csState.AsStringC()); + CPDF_Dictionary* pState = pUsage->GetDictBy(csState); if (pState) { CFX_ByteString csFind = csState + "State"; - if (pState->KeyExist(csFind.AsStringC())) { - return pState->GetStringBy(csFind.AsStringC()) != "OFF"; + if (pState->KeyExist(csFind)) { + return pState->GetStringBy(csFind) != "OFF"; } } if (csState != "View") { -- cgit v1.2.3