diff options
author | Bo Xu <bo_xu@foxitsoftware.com> | 2014-09-09 18:39:30 -0700 |
---|---|---|
committer | Bo Xu <bo_xu@foxitsoftware.com> | 2014-09-09 18:39:30 -0700 |
commit | 9175beec2686231fe284e8c8095d04668817509b (patch) | |
tree | e8956fbb7dd070c405a4586ca54b69d6c2caf6ef /core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp | |
parent | 663af999d721f86e828a87354c380b76d146cedf (diff) | |
download | pdfium-9175beec2686231fe284e8c8095d04668817509b.tar.xz |
Change the forced clear order of CPDF_DocPageData::Clear, and remove m_pDocument in CPDF_Color
If not forced clear, the counter of CPDF_Pattern will take care the count of referenced instance.
When forced clear, clear color first to make sure pattern still exists when referencing it.
BUG=411154
R=tsepez@chromium.org
Review URL: https://codereview.chromium.org/554913003
Diffstat (limited to 'core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp')
-rw-r--r-- | core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp index 16f0a9cfad..131edbe9b5 100644 --- a/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp +++ b/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp @@ -154,17 +154,6 @@ void CPDF_DocPageData::Clear(FX_BOOL bForceRelease) FX_DWORD nCount; m_bForceClear = bForceRelease; - pos = m_PatternMap.GetStartPosition(); - while (pos) { - CPDF_Object* ptObj; - CPDF_CountedObject<CPDF_Pattern*>* ptData; - m_PatternMap.GetNextAssoc(pos, ptObj, ptData); - nCount = ptData->m_nCount; - if (bForceRelease || nCount < 2) { - delete ptData->m_Obj; - ptData->m_Obj = NULL; - } - } pos = m_FontMap.GetStartPosition(); while (pos) { CPDF_Dictionary* fontDict; @@ -233,6 +222,17 @@ void CPDF_DocPageData::Clear(FX_BOOL bForceRelease) m_FontFileMap.RemoveKey(ftKey); } } + pos = m_PatternMap.GetStartPosition(); + while (pos) { + CPDF_Object* ptObj; + CPDF_CountedObject<CPDF_Pattern*>* ptData; + m_PatternMap.GetNextAssoc(pos, ptObj, ptData); + nCount = ptData->m_nCount; + if (bForceRelease || nCount < 2) { + delete ptData->m_Obj; + ptData->m_Obj = NULL; + } + } } CPDF_Font* CPDF_DocPageData::GetFont(CPDF_Dictionary* pFontDict, FX_BOOL findOnly) { |