summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/fpdfapi/font/cfx_stockfontarray.cpp6
-rw-r--r--core/fpdfapi/font/cpdf_font.h6
2 files changed, 7 insertions, 5 deletions
diff --git a/core/fpdfapi/font/cfx_stockfontarray.cpp b/core/fpdfapi/font/cfx_stockfontarray.cpp
index 0808471c82..3b61e11f36 100644
--- a/core/fpdfapi/font/cfx_stockfontarray.cpp
+++ b/core/fpdfapi/font/cfx_stockfontarray.cpp
@@ -15,8 +15,10 @@ CFX_StockFontArray::CFX_StockFontArray() {}
CFX_StockFontArray::~CFX_StockFontArray() {
for (size_t i = 0; i < FX_ArraySize(m_StockFonts); ++i) {
- if (m_StockFonts[i])
- delete m_StockFonts[i]->GetFontDict();
+ if (m_StockFonts[i]) {
+ std::unique_ptr<CPDF_Dictionary> destroy(m_StockFonts[i]->GetFontDict());
+ m_StockFonts[i]->ClearFontDict();
+ }
}
}
diff --git a/core/fpdfapi/font/cpdf_font.h b/core/fpdfapi/font/cpdf_font.h
index 4b099ae0d0..9580d1c36b 100644
--- a/core/fpdfapi/font/cpdf_font.h
+++ b/core/fpdfapi/font/cpdf_font.h
@@ -66,8 +66,8 @@ class CPDF_Font {
ByteString GetBaseFont() const { return m_BaseFont; }
CFX_SubstFont* GetSubstFont() const { return m_Font.GetSubstFont(); }
bool IsEmbedded() const { return IsType3Font() || m_pFontFile != nullptr; }
- const CPDF_Dictionary* GetFontDict() const { return m_pFontDict; }
- CPDF_Dictionary* GetFontDict() { return m_pFontDict; }
+ CPDF_Dictionary* GetFontDict() const { return m_pFontDict.Get(); }
+ void ClearFontDict() { m_pFontDict = nullptr; }
bool IsStandardFont() const;
FXFT_Face GetFace() const { return m_Font.GetFace(); }
void AppendChar(ByteString* str, uint32_t charcode) const;
@@ -113,7 +113,7 @@ class CPDF_Font {
std::vector<std::unique_ptr<CFX_Font>> m_FontFallbacks;
ByteString m_BaseFont;
RetainPtr<CPDF_StreamAcc> m_pFontFile;
- CPDF_Dictionary* m_pFontDict;
+ UnownedPtr<CPDF_Dictionary> m_pFontDict;
mutable std::unique_ptr<CPDF_ToUnicodeMap> m_pToUnicodeMap;
mutable bool m_bToUnicodeLoaded;
int m_Flags;