Chromium Code Reviews| Index: core/src/fpdfapi/fpdf_font/fpdf_font_cid.cpp |
| diff --git a/core/src/fpdfapi/fpdf_font/fpdf_font_cid.cpp b/core/src/fpdfapi/fpdf_font/fpdf_font_cid.cpp |
| index 3c8b2567fe8490005271a4154acd07fd690b7e8f..cec5dd4727ddb97da4f5f30dc0bccaa44c598dad 100644 |
| --- a/core/src/fpdfapi/fpdf_font/fpdf_font_cid.cpp |
| +++ b/core/src/fpdfapi/fpdf_font/fpdf_font_cid.cpp |
| @@ -22,19 +22,26 @@ CPDF_CMapManager::CPDF_CMapManager() { |
| FXSYS_memset(m_CID2UnicodeMaps, 0, sizeof m_CID2UnicodeMaps); |
| } |
| CPDF_CMapManager::~CPDF_CMapManager() { |
| - DropAll(FALSE); |
| + auto it = m_CMaps.begin(); |
| + while (it != m_CMaps.end()) { |
|
Lei Zhang
2015/08/15 00:35:44
Range-Based For Loop?
Tom Sepez
2015/08/17 20:15:25
Done; you're right its probably faster to just cle
|
| + auto temp = it++; |
| + delete temp->second; |
| + m_CMaps.erase(temp); |
| + } |
| + for (int i = 0; i < FX_ArraySize(m_CID2UnicodeMaps); ++i) { |
| + delete m_CID2UnicodeMaps[i]; |
| + } |
| } |
| CPDF_CMap* CPDF_CMapManager::GetPredefinedCMap(const CFX_ByteString& name, |
| FX_BOOL bPromptCJK) { |
| - CPDF_CMap* pCMap; |
| - if (m_CMaps.Lookup(name, (void*&)pCMap)) { |
| - return pCMap; |
| + auto it = m_CMaps.find(name); |
| + if (it != m_CMaps.end()) { |
| + return it->second; |
| } |
| - pCMap = LoadPredefinedCMap(name, bPromptCJK); |
| - if (name.IsEmpty()) { |
| - return pCMap; |
| + CPDF_CMap* pCMap = LoadPredefinedCMap(name, bPromptCJK); |
| + if (!name.IsEmpty()) { |
| + m_CMaps[name] = pCMap; |
| } |
| - m_CMaps.SetAt(name, pCMap); |
| return pCMap; |
| } |
| CPDF_CMap* CPDF_CMapManager::LoadPredefinedCMap(const CFX_ByteString& name, |
| @@ -59,33 +66,14 @@ int _CharsetFromOrdering(const CFX_ByteString& Ordering) { |
| return CIDSET_UNKNOWN; |
| } |
| void CPDF_CMapManager::ReloadAll() { |
| - DropAll(TRUE); |
| -} |
| -void CPDF_CMapManager::DropAll(FX_BOOL bReload) { |
| - FX_POSITION pos = m_CMaps.GetStartPosition(); |
| - while (pos) { |
| - CFX_ByteString name; |
| - CPDF_CMap* pCMap; |
| - m_CMaps.GetNextAssoc(pos, name, (void*&)pCMap); |
| - if (pCMap == NULL) { |
| - continue; |
| - } |
| - if (bReload) { |
| - pCMap->LoadPredefined(this, name, FALSE); |
| - } else { |
| - delete pCMap; |
| + for (auto it = m_CMaps.begin(); it != m_CMaps.end(); ++it) { |
| + if (CPDF_CMap* pCMap = it->second) { |
|
Lei Zhang
2015/08/15 00:35:44
This is always true.
Tom Sepez
2015/08/17 20:15:25
Done.
|
| + pCMap->LoadPredefined(this, it->first, FALSE); |
| } |
| } |
| - for (int i = 0; i < sizeof m_CID2UnicodeMaps / sizeof(CPDF_CID2UnicodeMap*); |
| - i++) { |
| - CPDF_CID2UnicodeMap* pMap = m_CID2UnicodeMaps[i]; |
| - if (pMap == NULL) { |
| - continue; |
| - } |
| - if (bReload) { |
| + for (int i = 0; i < FX_ArraySize(m_CID2UnicodeMaps); ++i) { |
| + if (CPDF_CID2UnicodeMap* pMap = m_CID2UnicodeMaps[i]) { |
| pMap->Load(this, i, FALSE); |
| - } else { |
| - delete pMap; |
| } |
| } |
| } |