Index: content/renderer/render_frame_proxy.cc |
diff --git a/content/renderer/render_frame_proxy.cc b/content/renderer/render_frame_proxy.cc |
index 558c3911a83077f87349b80b7a123b8dc9357a1d..eaaa2abeaa546e0a8f0d85b8c4a43527189ef735 100644 |
--- a/content/renderer/render_frame_proxy.cc |
+++ b/content/renderer/render_frame_proxy.cc |
@@ -131,11 +131,7 @@ RenderFrameProxy::~RenderFrameProxy() { |
render_view()->UnregisterRenderFrameProxy(this); |
- FrameMap::iterator it = g_frame_map.Get().find(web_frame_); |
- CHECK(it != g_frame_map.Get().end()); |
- CHECK_EQ(it->second, this); |
- g_frame_map.Get().erase(it); |
- |
+ CHECK(!web_frame_); |
RenderThread::Get()->RemoveRoute(routing_id_); |
g_routing_id_proxy_map.Get().erase(routing_id_); |
} |
@@ -319,6 +315,16 @@ void RenderFrameProxy::frameDetached() { |
} |
web_frame_->close(); |
+ |
+ // Remove the entry in the WebFrame->RenderFrameProxy map, as the |web_frame_| |
+ // is no longer valid. |
+ FrameMap::iterator it = g_frame_map.Get().find(web_frame_); |
+ CHECK(it != g_frame_map.Get().end()); |
+ CHECK_EQ(it->second, this); |
+ g_frame_map.Get().erase(it); |
+ |
+ web_frame_ = nullptr; |
+ |
delete this; |
} |