summaryrefslogtreecommitdiff
path: root/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp
diff options
context:
space:
mode:
authorBo Xu <bo_xu@foxitsoftware.com>2014-09-09 18:39:30 -0700
committerBo Xu <bo_xu@foxitsoftware.com>2014-09-09 18:39:30 -0700
commit9175beec2686231fe284e8c8095d04668817509b (patch)
treee8956fbb7dd070c405a4586ca54b69d6c2caf6ef /core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp
parent663af999d721f86e828a87354c380b76d146cedf (diff)
downloadpdfium-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.cpp22
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)
{