Index: fpdfsdk/fsdk_mgr.cpp |
diff --git a/fpdfsdk/fsdk_mgr.cpp b/fpdfsdk/fsdk_mgr.cpp |
index 68143d2bdde1df3a7ee808ee4d3fed6f0af0d3a7..8587de1e80f5de7938bd318bcd00a2d664195c7c 100644 |
--- a/fpdfsdk/fsdk_mgr.cpp |
+++ b/fpdfsdk/fsdk_mgr.cpp |
@@ -263,7 +263,7 @@ CPDFSDK_Document::~CPDFSDK_Document() { |
CPDFSDK_PageView* CPDFSDK_Document::GetPageView( |
UnderlyingPageType* pUnderlyingPage, |
- FX_BOOL ReNew) { |
+ bool ReNew) { |
auto it = m_pageMap.find(pUnderlyingPage); |
if (it != m_pageMap.end()) |
return it->second; |
@@ -281,7 +281,7 @@ CPDFSDK_PageView* CPDFSDK_Document::GetPageView( |
CPDFSDK_PageView* CPDFSDK_Document::GetCurrentView() { |
UnderlyingPageType* pPage = |
UnderlyingFromFPDFPage(m_pEnv->FFI_GetCurrentPage(m_pDoc)); |
- return pPage ? GetPageView(pPage, TRUE) : nullptr; |
+ return pPage ? GetPageView(pPage, true) : nullptr; |
} |
CPDFSDK_PageView* CPDFSDK_Document::GetPageView(int nIndex) { |
@@ -353,9 +353,12 @@ void CPDFSDK_Document::RemovePageView(UnderlyingPageType* pUnderlyingPage) { |
if (pPageView->IsLocked()) |
return; |
+ // Remove the page from the map to make sure we don't accidentally attempt |
+ // to use the |pPageView| while we're cleaning it up. |
+ m_pageMap.erase(it); |
+ |
pPageView->KillFocusAnnotIfNeeded(); |
delete pPageView; |
- m_pageMap.erase(it); |
} |
UnderlyingPageType* CPDFSDK_Document::GetPage(int nIndex) { |