Index: core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
index a12a2894a5bc27cd5360d9e734f675cef7e2bc30..4f81be1d3f949551e1577642c30f963a51f25533 100644 |
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
@@ -4,6 +4,7 @@ |
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
+#include <set> |
#include <utility> |
#include <vector> |
@@ -3003,9 +3004,8 @@ class CPDF_DataAvail final : public IPDF_DataAvail { |
CPDF_PageNode m_pageNodes; |
- CFX_CMapDWordToDWord* m_pageMapCheckState; |
- |
- CFX_CMapDWordToDWord* m_pagesLoadState; |
+ std::set<FX_DWORD> m_pageMapCheckState; |
+ std::set<FX_DWORD> m_pagesLoadState; |
}; |
IPDF_DataAvail::IPDF_DataAvail(IFX_FileAvail* pFileAvail, |
@@ -3063,13 +3063,11 @@ CPDF_DataAvail::CPDF_DataAvail(IFX_FileAvail* pFileAvail, |
m_pAcroForm = NULL; |
m_pPageDict = NULL; |
m_pPageResource = NULL; |
- m_pageMapCheckState = NULL; |
m_docStatus = PDF_DATAAVAIL_HEADER; |
m_parser.m_bOwnFileRead = FALSE; |
m_bTotalLoadPageTree = FALSE; |
m_bCurPageDictLoadOK = FALSE; |
m_bLinearedDataOK = FALSE; |
- m_pagesLoadState = NULL; |
} |
CPDF_DataAvail::~CPDF_DataAvail() { |
if (m_pLinearized) { |
@@ -3081,8 +3079,6 @@ CPDF_DataAvail::~CPDF_DataAvail() { |
if (m_pTrailer) { |
m_pTrailer->Release(); |
} |
- delete m_pageMapCheckState; |
- delete m_pagesLoadState; |
int32_t i = 0; |
int32_t iSize = m_arrayAcroforms.GetSize(); |
for (i = 0; i < iSize; ++i) { |
@@ -3517,29 +3513,14 @@ FX_BOOL CPDF_DataAvail::PreparePageItem() { |
return TRUE; |
} |
FX_BOOL CPDF_DataAvail::IsFirstCheck(int iPage) { |
- if (NULL == m_pageMapCheckState) { |
- m_pageMapCheckState = new CFX_CMapDWordToDWord(); |
- } |
- FX_DWORD dwValue = 0; |
- if (!m_pageMapCheckState->Lookup(iPage, dwValue)) { |
- m_pageMapCheckState->SetAt(iPage, 1); |
- return TRUE; |
- } |
- if (dwValue != 0) { |
+ if (m_pageMapCheckState.find(iPage) != m_pageMapCheckState.end()) |
return FALSE; |
- } |
- m_pageMapCheckState->SetAt(iPage, 1); |
+ |
+ m_pageMapCheckState.insert(iPage); |
return TRUE; |
} |
void CPDF_DataAvail::ResetFirstCheck(int iPage) { |
- if (NULL == m_pageMapCheckState) { |
- m_pageMapCheckState = new CFX_CMapDWordToDWord(); |
- } |
- FX_DWORD dwValue = 1; |
- if (!m_pageMapCheckState->Lookup(iPage, dwValue)) { |
- return; |
- } |
- m_pageMapCheckState->SetAt(iPage, 0); |
+ m_pageMapCheckState.erase(iPage); |
} |
FX_BOOL CPDF_DataAvail::CheckPage(IFX_DownloadHints* pHints) { |
FX_DWORD iPageObjs = m_PageObjList.GetSize(); |
@@ -4513,16 +4494,12 @@ FX_BOOL CPDF_DataAvail::IsPageAvail(int32_t iPage, IFX_DownloadHints* pHints) { |
m_objs_array.RemoveAll(); |
m_objnum_array.RemoveAll(); |
} |
- if (m_pagesLoadState == NULL) { |
- m_pagesLoadState = new CFX_CMapDWordToDWord(); |
- } |
- FX_DWORD dwPageLoad = 0; |
- if (m_pagesLoadState->Lookup(iPage, dwPageLoad) && dwPageLoad != 0) { |
+ if (m_pagesLoadState.find(iPage) != m_pagesLoadState.end()) { |
return TRUE; |
} |
if (m_bLinearized) { |
if ((FX_DWORD)iPage == m_dwFirstPageNo) { |
- m_pagesLoadState->SetAt(iPage, TRUE); |
+ m_pagesLoadState.insert(iPage); |
return TRUE; |
} |
if (!CheckLinearizedData(pHints)) { |
@@ -4617,7 +4594,7 @@ FX_BOOL CPDF_DataAvail::IsPageAvail(int32_t iPage, IFX_DownloadHints* pHints) { |
m_bAnnotsLoad = FALSE; |
m_bCurPageDictLoadOK = FALSE; |
ResetFirstCheck(iPage); |
- m_pagesLoadState->SetAt(iPage, TRUE); |
+ m_pagesLoadState.insert(iPage); |
return TRUE; |
} |
FX_BOOL CPDF_DataAvail::CheckResources(IFX_DownloadHints* pHints) { |