summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2017-05-26 11:25:06 -0700
committerChromium commit bot <commit-bot@chromium.org>2017-05-26 19:16:38 +0000
commitfb9c11b49ee4fe6c18703d661dcaee498085c4c5 (patch)
tree026f0d4df7b09ef52f485de663dbbc20239100fe
parentf1697fa06b9fae75dd1c0782f5a721795cfc4a0c (diff)
downloadpdfium-fb9c11b49ee4fe6c18703d661dcaee498085c4c5.tar.xz
Release unowned CS reference before maybe destroying owned one
Colorspaces need to be properly refcounted but in the mean time, get rid of an obvious dangling pointer. Bug: 726728 Change-Id: I6bd879b18f61f7f5defd2679ce896013eb218b9b Reviewed-on: https://pdfium-review.googlesource.com/6072 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
-rw-r--r--core/fpdfapi/page/cpdf_shadingpattern.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/core/fpdfapi/page/cpdf_shadingpattern.cpp b/core/fpdfapi/page/cpdf_shadingpattern.cpp
index c21f51cb77..542c4051c5 100644
--- a/core/fpdfapi/page/cpdf_shadingpattern.cpp
+++ b/core/fpdfapi/page/cpdf_shadingpattern.cpp
@@ -45,11 +45,13 @@ CPDF_ShadingPattern::CPDF_ShadingPattern(CPDF_Document* pDoc,
}
CPDF_ShadingPattern::~CPDF_ShadingPattern() {
- CPDF_ColorSpace* pCS = m_pCountedCS ? m_pCountedCS->get() : nullptr;
- if (pCS) {
+ CPDF_ColorSpace* pCountedCS = m_pCountedCS ? m_pCountedCS->get() : nullptr;
+ if (pCountedCS) {
auto* pPageData = document()->GetPageData();
- if (pPageData)
- pPageData->ReleaseColorSpace(pCS->GetArray());
+ if (pPageData) {
+ m_pCS.Release(); // Give up unowned reference first.
+ pPageData->ReleaseColorSpace(pCountedCS->GetArray());
+ }
}
}