From 6fd07ef0a817dca5acbcadea41b8f880376f339a Mon Sep 17 00:00:00 2001 From: tsepez Date: Fri, 6 Jan 2017 09:48:18 -0800 Subject: Remove CFX_MapPtrToPtr in xfa/fgas, part 2 Review-Url: https://codereview.chromium.org/2616623005 --- xfa/fgas/font/cfgas_fontmgr.cpp | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) (limited to 'xfa/fgas/font/cfgas_fontmgr.cpp') diff --git a/xfa/fgas/font/cfgas_fontmgr.cpp b/xfa/fgas/font/cfgas_fontmgr.cpp index 1849441a16..9d3954fb1e 100644 --- a/xfa/fgas/font/cfgas_fontmgr.cpp +++ b/xfa/fgas/font/cfgas_fontmgr.cpp @@ -575,14 +575,6 @@ CFGAS_FontMgr::CFGAS_FontMgr(CFX_FontSourceEnum_File* pFontEnum) CFGAS_FontMgr::~CFGAS_FontMgr() { for (int32_t i = 0; i < m_InstalledFonts.GetSize(); i++) delete m_InstalledFonts[i]; - FX_POSITION pos = m_Hash2CandidateList.GetStartPosition(); - while (pos) { - uint32_t dwHash; - CFX_FontDescriptorInfos* pDescs; - m_Hash2CandidateList.GetNextAssoc(pos, dwHash, pDescs); - delete pDescs; - } - m_Hash2Fonts.clear(); } bool CFGAS_FontMgr::EnumFontsFromFontMapper() { @@ -645,12 +637,13 @@ CFX_RetainPtr CFGAS_FontMgr::GetFontByCodePage( if (!pFontArray->empty()) return (*pFontArray)[0]; - CFX_FontDescriptorInfos* sortedFonts = nullptr; - if (!m_Hash2CandidateList.Lookup(dwHash, sortedFonts)) { - sortedFonts = new CFX_FontDescriptorInfos; + CFX_FontDescriptorInfos* sortedFonts = m_Hash2CandidateList[dwHash].get(); + if (!sortedFonts) { + auto pNewFonts = pdfium::MakeUnique(); + sortedFonts = pNewFonts.get(); MatchFonts(*sortedFonts, wCodePage, dwFontStyles, CFX_WideString(pszFontFamily), 0); - m_Hash2CandidateList.SetAt(dwHash, sortedFonts); + m_Hash2CandidateList[dwHash] = std::move(pNewFonts); } if (sortedFonts->GetSize() == 0) return nullptr; @@ -688,12 +681,13 @@ CFX_RetainPtr CFGAS_FontMgr::GetFontByUnicode( if (VerifyUnicode((*pFonts)[i], wUnicode)) return (*pFonts)[i]; } - CFX_FontDescriptorInfos* sortedFonts = nullptr; - if (!m_Hash2CandidateList.Lookup(dwHash, sortedFonts)) { - sortedFonts = new CFX_FontDescriptorInfos; + CFX_FontDescriptorInfos* sortedFonts = m_Hash2CandidateList[dwHash].get(); + if (!sortedFonts) { + auto pNewFonts = pdfium::MakeUnique(); + sortedFonts = pNewFonts.get(); MatchFonts(*sortedFonts, wCodePage, dwFontStyles, CFX_WideString(pszFontFamily), wUnicode); - m_Hash2CandidateList.SetAt(dwHash, sortedFonts); + m_Hash2CandidateList[dwHash] = std::move(pNewFonts); } for (int32_t i = 0; i < sortedFonts->GetSize(); ++i) { CFX_FontDescriptor* pDesc = sortedFonts->GetAt(i).pFont; -- cgit v1.2.3