diff options
Diffstat (limited to 'core/fpdfapi/fpdf_page/cpdf_textstate.cpp')
-rw-r--r-- | core/fpdfapi/fpdf_page/cpdf_textstate.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/core/fpdfapi/fpdf_page/cpdf_textstate.cpp b/core/fpdfapi/fpdf_page/cpdf_textstate.cpp index 47e2116836..ae75876664 100644 --- a/core/fpdfapi/fpdf_page/cpdf_textstate.cpp +++ b/core/fpdfapi/fpdf_page/cpdf_textstate.cpp @@ -10,15 +10,16 @@ #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" void CPDF_TextState::SetFont(CPDF_Font* pFont) { - MakePrivateCopy(); - CPDF_TextStateData* pStateData = GetObject(); - CPDF_Document* pDoc = pStateData->m_pDocument; - CPDF_DocPageData* pPageData = pDoc ? pDoc->GetPageData() : nullptr; - if (pPageData && pStateData->m_pFont && !pPageData->IsForceClear()) - pPageData->ReleaseFont(pStateData->m_pFont->GetFontDict()); - - pStateData->m_pDocument = pFont ? pFont->m_pDocument : nullptr; - pStateData->m_pFont = pFont; + CPDF_TextStateData* pStateData = GetPrivateCopy(); + if (pStateData) { + CPDF_Document* pDoc = pStateData->m_pDocument; + CPDF_DocPageData* pPageData = pDoc ? pDoc->GetPageData() : nullptr; + if (pPageData && pStateData->m_pFont && !pPageData->IsForceClear()) { + pPageData->ReleaseFont(pStateData->m_pFont->GetFontDict()); + } + pStateData->m_pDocument = pFont ? pFont->m_pDocument : nullptr; + pStateData->m_pFont = pFont; + } } FX_FLOAT CPDF_TextState::GetFontSizeV() const { |