diff options
author | Bo Xu <bo_xu@foxitsoftware.com> | 2014-09-16 13:24:37 -0700 |
---|---|---|
committer | Jun Fang <jun_fang@foxitsoftware.com> | 2014-09-29 12:36:25 -0700 |
commit | ebd58e74e86db32f60219dbe459ebd8b1678a097 (patch) | |
tree | b09d59d4aca81166da8431d04ba3e77cd11062b2 | |
parent | e7e9da54a57f73b995b8aa213a675de7fcdc61cf (diff) | |
download | pdfium-ebd58e74e86db32f60219dbe459ebd8b1678a097.tar.xz |
When forcing clear page data, no need to release colorspace when releasing pattern
BUG=414661
R=tsepez@chromium.org
Review URL: https://codereview.chromium.org/572853006
Conflicts:
core/include/fpdfapi/fpdf_resource.h
core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp
-rw-r--r-- | core/include/fpdfapi/fpdf_resource.h | 4 | ||||
-rw-r--r-- | core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp | 1 | ||||
-rw-r--r-- | core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp | 4 |
3 files changed, 5 insertions, 4 deletions
diff --git a/core/include/fpdfapi/fpdf_resource.h b/core/include/fpdfapi/fpdf_resource.h index 25256fa86a..dfbe0c3cee 100644 --- a/core/include/fpdfapi/fpdf_resource.h +++ b/core/include/fpdfapi/fpdf_resource.h @@ -730,7 +730,7 @@ class CPDF_Pattern : public CFX_Object public: virtual ~CPDF_Pattern(); - void SaveColor(CPDF_Color* pColor) {m_pColor = pColor;} + void SetForceClear(FX_BOOL bForceClear) { m_bForceClear = bForceClear; } CPDF_Object* m_pPatternObj; @@ -743,8 +743,8 @@ public: CPDF_Color* m_pColor; protected: - CPDF_Pattern(const CFX_AffineMatrix* pParentMatrix); + FX_BOOL m_bForceClear; }; class CPDF_TilingPattern : public CPDF_Pattern diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp index 131edbe9b5..77db4534fb 100644 --- a/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp +++ b/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp @@ -229,6 +229,7 @@ void CPDF_DocPageData::Clear(FX_BOOL bForceRelease) m_PatternMap.GetNextAssoc(pos, ptObj, ptData); nCount = ptData->m_nCount; if (bForceRelease || nCount < 2) { + ptData->m_Obj->SetForceClear(bForceRelease); delete ptData->m_Obj; ptData->m_Obj = NULL; } diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp index c7c1e7a565..c4de9e14dd 100644 --- a/core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp +++ b/core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp @@ -8,7 +8,7 @@ #include "pageint.h" CPDF_Pattern::CPDF_Pattern(const CFX_AffineMatrix* pParentMatrix) : - m_pPatternObj(NULL), m_PatternType(PATTERN_TILING), m_pDocument(NULL), m_pColor(NULL) + m_pPatternObj(NULL), m_PatternType(PATTERN_TILING), m_pDocument(NULL), m_bForceClear(FALSE) { if (pParentMatrix) { m_ParentMatrix = *pParentMatrix; @@ -102,7 +102,7 @@ void CPDF_ShadingPattern::Clear() m_pFunctions[i] = NULL; } CPDF_ColorSpace* pCS = m_pCS; - if (pCS && m_pDocument) { + if (!m_bForceClear && pCS && m_pDocument) { m_pDocument->GetPageData()->ReleaseColorSpace(pCS->GetArray()); } m_ShadingType = 0; |