Index: Source/core/loader/FrameLoader.cpp |
diff --git a/Source/core/loader/FrameLoader.cpp b/Source/core/loader/FrameLoader.cpp |
index 06bbce3a01c3016cfc61bb863ccc570c8d8bead5..2a9a2ebde74734805bd245b46a1e3d7c4bfee22b 100644 |
--- a/Source/core/loader/FrameLoader.cpp |
+++ b/Source/core/loader/FrameLoader.cpp |
@@ -1405,11 +1405,12 @@ Frame* FrameLoader::findFrameForNavigation(const AtomicString& name, Document* a |
void FrameLoader::loadHistoryItem(HistoryItem* item, HistoryLoadType historyLoadType, ResourceRequestCachePolicy cachePolicy) |
{ |
+ // The frame may have been detached by a pageshow/popstate event handler. |
+ if (!m_client) |
+ return; |
+ |
m_provisionalItem = item; |
if (historyLoadType == HistorySameDocumentLoad) { |
- // loadInSameDocument() might (indirectly) dispatch events, which could lead to the frame being |
- // detached, so protect it. |
- RefPtr<Frame> protect(m_frame); |
loadInSameDocument(item->url(), item->stateObject(), DoNotUpdateBackForwardList, NotClientRedirect); |
restoreScrollPositionAndViewState(ForcedRestoreForSameDocumentHistoryNavigation); |
return; |