summaryrefslogtreecommitdiff
path: root/fpdfsdk/cpdfsdk_document.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fpdfsdk/cpdfsdk_document.cpp')
-rw-r--r--fpdfsdk/cpdfsdk_document.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/fpdfsdk/cpdfsdk_document.cpp b/fpdfsdk/cpdfsdk_document.cpp
index ad4516d53c..66851c0ebb 100644
--- a/fpdfsdk/cpdfsdk_document.cpp
+++ b/fpdfsdk/cpdfsdk_document.cpp
@@ -135,9 +135,13 @@ void CPDFSDK_Document::RemovePageView(UnderlyingPageType* pUnderlyingPage) {
return;
CPDFSDK_PageView* pPageView = it->second;
- if (pPageView->IsLocked())
+ if (pPageView->IsLocked() || pPageView->IsBeingDestroyed())
return;
+ // Mark the page view so we do not come into |RemovePageView| a second
+ // time while we're in the process of removing.
+ pPageView->SetBeingDestroyed();
+
// This must happen before we remove |pPageView| from the map because
// |KillFocusAnnotIfNeeded| can call into the |GetPage| method which will
// look for this page view in the map, if it doesn't find it a new one will