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..e7eb665428acf107964431e04938d99c2abed971 100644 |
--- a/content/renderer/render_frame_proxy.cc |
+++ b/content/renderer/render_frame_proxy.cc |
@@ -131,11 +131,6 @@ RenderFrameProxy::~RenderFrameProxy() { |
render_view()->UnregisterRenderFrameProxy(this); |
ncarter (slow)
2015/05/07 21:35:52
Is it worth adding a CHECK here to ensure sure tha
nasko
2015/05/07 21:40:52
Yeah, I thought of doing that and forgot to add it
|
- 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); |
- |
RenderThread::Get()->RemoveRoute(routing_id_); |
g_routing_id_proxy_map.Get().erase(routing_id_); |
} |
@@ -319,6 +314,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; |
} |