diff options
author | Tom Sepez <tsepez@chromium.org> | 2015-08-19 09:55:12 -0700 |
---|---|---|
committer | Tom Sepez <tsepez@chromium.org> | 2015-08-19 09:55:12 -0700 |
commit | 90b5442f15cecbcf11ac5f6cea3ce612ad863363 (patch) | |
tree | 51b6240a8401866380df855818e955348be0bd0f /core/src/fpdfapi/fpdf_font/fpdf_font.cpp | |
parent | 09d33bcd82a82cb55039d41651df13e17d6c3e59 (diff) | |
download | pdfium-90b5442f15cecbcf11ac5f6cea3ce612ad863363.tar.xz |
Merge to XFA: FX_CMapDwordToDword considered harmful.
(cherry picked from commit 85d5c4af4a9546970b34dd413c473d10fef8534b)
Original Review URL: https://codereview.chromium.org/1289703003 .
TBR=thestig@chromium.org
Conflicts:
core/include/fxcrt/fx_basic.h
BUG=
Review URL: https://codereview.chromium.org/1302783003 .
Diffstat (limited to 'core/src/fpdfapi/fpdf_font/fpdf_font.cpp')
-rw-r--r-- | core/src/fpdfapi/fpdf_font/fpdf_font.cpp | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/core/src/fpdfapi/fpdf_font/fpdf_font.cpp b/core/src/fpdfapi/fpdf_font/fpdf_font.cpp index 8eae7cf3f8..7f593c7be3 100644 --- a/core/src/fpdfapi/fpdf_font/fpdf_font.cpp +++ b/core/src/fpdfapi/fpdf_font/fpdf_font.cpp @@ -473,8 +473,9 @@ CPDF_FontCharMap::CPDF_FontCharMap(CPDF_Font* pFont) { m_pFont = pFont; } CFX_WideString CPDF_ToUnicodeMap::Lookup(FX_DWORD charcode) { - FX_DWORD value; - if (m_Map.Lookup(charcode, value)) { + auto it = m_Map.find(charcode); + if (it != m_Map.end()) { + FX_DWORD value = it->second; FX_WCHAR unicode = (FX_WCHAR)(value & 0xffff); if (unicode != 0xffff) { return unicode; @@ -500,13 +501,9 @@ CFX_WideString CPDF_ToUnicodeMap::Lookup(FX_DWORD charcode) { return CFX_WideString(); } FX_DWORD CPDF_ToUnicodeMap::ReverseLookup(FX_WCHAR unicode) { - FX_POSITION pos = m_Map.GetStartPosition(); - while (pos) { - FX_DWORD key, value; - m_Map.GetNextAssoc(pos, key, value); - if ((FX_WCHAR)value == unicode) { - return key; - } + for (const auto& pair : m_Map) { + if (pair.second == unicode) + return pair.first; } return 0; } @@ -599,7 +596,6 @@ void CPDF_ToUnicodeMap::Load(CPDF_Stream* pStream) { CPDF_StreamAcc stream; stream.LoadAllData(pStream, FALSE); CPDF_SimpleParser parser(stream.GetData(), stream.GetSize()); - m_Map.EstimateSize(stream.GetSize() / 8, 1024); while (1) { CFX_ByteStringC word = parser.GetWord(); if (word.IsEmpty()) { @@ -619,9 +615,9 @@ void CPDF_ToUnicodeMap::Load(CPDF_Stream* pStream) { continue; } if (len == 1) { - m_Map.SetAt(srccode, destcode.GetAt(0)); + m_Map[srccode] = destcode.GetAt(0); } else { - m_Map.SetAt(srccode, m_MultiCharBuf.GetLength() * 0x10000 + 0xffff); + m_Map[srccode] = m_MultiCharBuf.GetLength() * 0x10000 + 0xffff; m_MultiCharBuf.AppendChar(destcode.GetLength()); m_MultiCharBuf << destcode; } @@ -650,9 +646,9 @@ void CPDF_ToUnicodeMap::Load(CPDF_Stream* pStream) { continue; } if (len == 1) { - m_Map.SetAt(code, destcode.GetAt(0)); + m_Map[code] = destcode.GetAt(0); } else { - m_Map.SetAt(code, m_MultiCharBuf.GetLength() * 0x10000 + 0xffff); + m_Map[code] = m_MultiCharBuf.GetLength() * 0x10000 + 0xffff; m_MultiCharBuf.AppendChar(destcode.GetLength()); m_MultiCharBuf << destcode; } @@ -665,7 +661,7 @@ void CPDF_ToUnicodeMap::Load(CPDF_Stream* pStream) { if (len == 1) { value = _StringToCode(start); for (FX_DWORD code = lowcode; code <= highcode; code++) { - m_Map.SetAt(code, value++); + m_Map[code] = value++; } } else { for (FX_DWORD code = lowcode; code <= highcode; code++) { @@ -675,7 +671,7 @@ void CPDF_ToUnicodeMap::Load(CPDF_Stream* pStream) { } else { retcode = _StringDataAdd(destcode); } - m_Map.SetAt(code, m_MultiCharBuf.GetLength() * 0x10000 + 0xffff); + m_Map[code] = m_MultiCharBuf.GetLength() * 0x10000 + 0xffff; m_MultiCharBuf.AppendChar(retcode.GetLength()); m_MultiCharBuf << retcode; destcode = retcode; |