summaryrefslogtreecommitdiff
path: root/core/fpdfapi/page/cpdf_colorspace.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/fpdfapi/page/cpdf_colorspace.cpp')
-rw-r--r--core/fpdfapi/page/cpdf_colorspace.cpp9
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) {