Index: content/renderer/render_frame_proxy.cc |
diff --git a/content/renderer/render_frame_proxy.cc b/content/renderer/render_frame_proxy.cc |
index 5af5f570fc8c0c946b22c1be6f96df2904087efe..cb42b40458872aab54046860f8644011c28e8822 100644 |
--- a/content/renderer/render_frame_proxy.cc |
+++ b/content/renderer/render_frame_proxy.cc |
@@ -117,6 +117,15 @@ RenderFrameProxy::RenderFrameProxy(int routing_id, int frame_routing_id) |
} |
RenderFrameProxy::~RenderFrameProxy() { |
+ // TODO(nasko): Set the render_frame_proxy to null to avoid a double deletion |
+ // when detaching the main frame. This can be removed once RenderFrameImpl and |
+ // RenderFrameProxy have been completely decoupled. See |
+ // https://crbug.com/357747. |
+ RenderFrameImpl* render_frame = |
+ RenderFrameImpl::FromRoutingID(frame_routing_id_); |
+ if (render_frame) |
+ render_frame->set_render_frame_proxy(nullptr); |
+ |
render_view()->UnregisterRenderFrameProxy(this); |
FrameMap::iterator it = g_frame_map.Get().find(web_frame_); |