diff options
Diffstat (limited to 'core/fpdfapi/page/cpdf_colorspace.cpp')
-rw-r--r-- | core/fpdfapi/page/cpdf_colorspace.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/core/fpdfapi/page/cpdf_colorspace.cpp b/core/fpdfapi/page/cpdf_colorspace.cpp index 913c9c728d..500de26c56 100644 --- a/core/fpdfapi/page/cpdf_colorspace.cpp +++ b/core/fpdfapi/page/cpdf_colorspace.cpp @@ -166,7 +166,7 @@ class CPDF_ICCBasedCS : public CPDF_ColorSpace { void PopulateRanges(CPDF_Dictionary* pDict); CFX_MaybeOwned<CPDF_ColorSpace> m_pAlterCS; - CPDF_IccProfile* m_pProfile; + CFX_RetainPtr<CPDF_IccProfile> m_pProfile; uint8_t* m_pCache; float* m_pRanges; }; @@ -849,8 +849,11 @@ CPDF_ICCBasedCS::CPDF_ICCBasedCS(CPDF_Document* pDoc) CPDF_ICCBasedCS::~CPDF_ICCBasedCS() { FX_Free(m_pCache); FX_Free(m_pRanges); - if (m_pProfile && m_pDocument) - m_pDocument->GetPageData()->ReleaseIccProfile(m_pProfile); + if (m_pProfile && m_pDocument) { + CPDF_Stream* pStream = m_pProfile->GetStream(); + m_pProfile.Reset(); // Give up our reference first. + m_pDocument->GetPageData()->MaybePurgeIccProfile(pStream); + } } bool CPDF_ICCBasedCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) { |