summaryrefslogtreecommitdiff
path: root/core/fpdfapi/fpdf_font
diff options
context:
space:
mode:
authorweili <weili@chromium.org>2016-07-25 07:40:27 -0700
committerCommit bot <commit-bot@chromium.org>2016-07-25 07:40:27 -0700
commit9b671ace8aec906683b05399cf8a2882ed8ef7b6 (patch)
treeca6193f08a18ffe917301fd523c6c668becb7bdb /core/fpdfapi/fpdf_font
parentd780735def22c4c2ec3a0cc89856c86486c25494 (diff)
downloadpdfium-9b671ace8aec906683b05399cf8a2882ed8ef7b6.tar.xz
Use smart pointers for CFX_Font and CFX_Type3Font classes
For the class owned member variables, use std::unique_ptr or std::vector for memory management. BUG=pdfium:518 Review-Url: https://codereview.chromium.org/2169793002
Diffstat (limited to 'core/fpdfapi/fpdf_font')
-rw-r--r--core/fpdfapi/fpdf_font/cpdf_type3font.cpp13
-rw-r--r--core/fpdfapi/fpdf_font/cpdf_type3font.h3
2 files changed, 7 insertions, 9 deletions
diff --git a/core/fpdfapi/fpdf_font/cpdf_type3font.cpp b/core/fpdfapi/fpdf_font/cpdf_type3font.cpp
index 6c339ea5a7..8e4ac56884 100644
--- a/core/fpdfapi/fpdf_font/cpdf_type3font.cpp
+++ b/core/fpdfapi/fpdf_font/cpdf_type3font.cpp
@@ -21,10 +21,7 @@ CPDF_Type3Font::CPDF_Type3Font()
FXSYS_memset(m_CharWidthL, 0, sizeof(m_CharWidthL));
}
-CPDF_Type3Font::~CPDF_Type3Font() {
- for (auto it : m_CacheMap)
- delete it.second;
-}
+CPDF_Type3Font::~CPDF_Type3Font() {}
bool CPDF_Type3Font::IsType3Font() const {
return true;
@@ -94,7 +91,7 @@ CPDF_Type3Char* CPDF_Type3Font::LoadChar(uint32_t charcode, int level) {
auto it = m_CacheMap.find(charcode);
if (it != m_CacheMap.end())
- return it->second;
+ return it->second.get();
const FX_CHAR* name =
GetAdobeCharName(m_BaseEncoding, m_pCharNames, charcode);
@@ -116,7 +113,7 @@ CPDF_Type3Char* CPDF_Type3Font::LoadChar(uint32_t charcode, int level) {
pNewChar->m_pForm->ParseContent(nullptr, nullptr, pNewChar.get(), level + 1);
it = m_CacheMap.find(charcode);
if (it != m_CacheMap.end())
- return it->second;
+ return it->second.get();
FX_FLOAT scale = m_FontMatrix.GetXUnit();
pNewChar->m_Width = (int32_t)(pNewChar->m_Width * scale + 0.5f);
@@ -134,8 +131,8 @@ CPDF_Type3Char* CPDF_Type3Font::LoadChar(uint32_t charcode, int level) {
rcBBox.bottom = FXSYS_round(char_rect.bottom * 1000);
ASSERT(!pdfium::ContainsKey(m_CacheMap, charcode));
- CPDF_Type3Char* pCachedChar = pNewChar.release();
- m_CacheMap[charcode] = pCachedChar;
+ m_CacheMap[charcode] = std::move(pNewChar);
+ CPDF_Type3Char* pCachedChar = m_CacheMap[charcode].get();
if (pCachedChar->m_pForm->GetPageObjectList()->empty())
pCachedChar->m_pForm.reset();
return pCachedChar;
diff --git a/core/fpdfapi/fpdf_font/cpdf_type3font.h b/core/fpdfapi/fpdf_font/cpdf_type3font.h
index 70992c9c8c..c5e99534e0 100644
--- a/core/fpdfapi/fpdf_font/cpdf_type3font.h
+++ b/core/fpdfapi/fpdf_font/cpdf_type3font.h
@@ -8,6 +8,7 @@
#define CORE_FPDFAPI_FPDF_FONT_CPDF_TYPE3FONT_H_
#include <map>
+#include <memory>
#include "core/fpdfapi/fpdf_font/cpdf_simplefont.h"
#include "core/fxcrt/include/fx_coordinates.h"
@@ -50,7 +51,7 @@ class CPDF_Type3Font : public CPDF_SimpleFont {
CPDF_Dictionary* m_pCharProcs;
CPDF_Dictionary* m_pPageResources;
CPDF_Dictionary* m_pFontResources;
- std::map<uint32_t, CPDF_Type3Char*> m_CacheMap;
+ std::map<uint32_t, std::unique_ptr<CPDF_Type3Char>> m_CacheMap;
};
#endif // CORE_FPDFAPI_FPDF_FONT_CPDF_TYPE3FONT_H_