summaryrefslogtreecommitdiff
path: root/core/fpdfapi/page/cpdf_colorspace.cpp
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2017-04-03 15:40:22 -0700
committerChromium commit bot <commit-bot@chromium.org>2017-04-04 17:02:49 +0000
commit6088612c21898eb79cfbde401984176dd94c385c (patch)
tree4e9ad42317d7057b170f8f9cb6898bb30e63a481 /core/fpdfapi/page/cpdf_colorspace.cpp
parent37cc5fb6b3407ce8e079bc1bdd0606713b975532 (diff)
downloadpdfium-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.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) {