Index: core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp |
diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp |
index 77db4534fbd27f345ede1a73f9cb5ce3bbaea08e..eb6482dbb282b1ac3a774db3b65a652a04e090fa 100644 |
--- a/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp |
+++ b/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp |
@@ -165,18 +165,6 @@ void CPDF_DocPageData::Clear(FX_BOOL bForceRelease) |
fontData->m_Obj = NULL; |
} |
} |
- pos = m_ImageMap.GetStartPosition(); |
- while (pos) { |
- FX_DWORD objNum; |
- CPDF_CountedObject<CPDF_Image*>* imageData; |
- m_ImageMap.GetNextAssoc(pos, objNum, imageData); |
- nCount = imageData->m_nCount; |
- if (bForceRelease || nCount < 2) { |
- delete imageData->m_Obj; |
- delete imageData; |
- m_ImageMap.RemoveKey(objNum); |
- } |
- } |
pos = m_ColorSpaceMap.GetStartPosition(); |
while (pos) { |
CPDF_Object* csKey; |
@@ -229,9 +217,23 @@ void CPDF_DocPageData::Clear(FX_BOOL bForceRelease) |
m_PatternMap.GetNextAssoc(pos, ptObj, ptData); |
nCount = ptData->m_nCount; |
Tom Sepez
2014/09/19 17:36:31
nit: if ptObj->m_obj is NULL, we can short-circuit
|
if (bForceRelease || nCount < 2) { |
- ptData->m_Obj->SetForceClear(bForceRelease); |
- delete ptData->m_Obj; |
- ptData->m_Obj = NULL; |
+ if (ptData->m_Obj) { |
+ ptData->m_Obj->SetForceClear(bForceRelease); |
+ delete ptData->m_Obj; |
+ ptData->m_Obj = NULL; |
+ } |
+ } |
+ } |
+ pos = m_ImageMap.GetStartPosition(); |
+ while (pos) { |
+ FX_DWORD objNum; |
+ CPDF_CountedObject<CPDF_Image*>* imageData; |
+ m_ImageMap.GetNextAssoc(pos, objNum, imageData); |
+ nCount = imageData->m_nCount; |
+ if (bForceRelease || nCount < 2) { |
+ delete imageData->m_Obj; |
Tom Sepez
2014/09/19 17:36:31
do we need to check imageData->m_obj for NULLness
|
+ delete imageData; |
+ m_ImageMap.RemoveKey(objNum); |
} |
} |
} |