diff options
author | Tom Sepez <tsepez@chromium.org> | 2017-04-03 15:40:22 -0700 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-04-04 17:02:49 +0000 |
commit | 6088612c21898eb79cfbde401984176dd94c385c (patch) | |
tree | 4e9ad42317d7057b170f8f9cb6898bb30e63a481 /core/fpdfapi/page/cpdf_colorspace.cpp | |
parent | 37cc5fb6b3407ce8e079bc1bdd0606713b975532 (diff) | |
download | pdfium-6088612c21898eb79cfbde401984176dd94c385c.tar.xz |
RefCount CPDF_IccProfile all the time
Make the IccProfile track its stream so that it has a
proper key with which to purge the docpagedata map.
Change-Id: Ib05ebc1afb828f1f5e5df62a1a33a1bfdecf507d
Reviewed-on: https://pdfium-review.googlesource.com/3619
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
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) { |