| Index: content/browser/frame_host/render_frame_host_manager.cc
|
| diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc
|
| index 1ffbbaa4861f5795c19410c982d11b26da767cdd..79a477d1e020d3b3b20b25c1fb7d121c842a1110 100644
|
| --- a/content/browser/frame_host/render_frame_host_manager.cc
|
| +++ b/content/browser/frame_host/render_frame_host_manager.cc
|
| @@ -912,10 +912,13 @@ void RenderFrameHostManager::DiscardUnusedFrame(
|
|
|
| void RenderFrameHostManager::MoveToPendingDeleteHosts(
|
| scoped_ptr<RenderFrameHostImpl> render_frame_host) {
|
| - // If this is the main frame going away, mark the corresponding
|
| - // RenderViewHost for deletion as well so that we don't try to reuse it.
|
| - if (render_frame_host->frame_tree_node()->IsMainFrame())
|
| + // If this is the main frame going away and there are no more references to
|
| + // its RenderViewHost, mark it for deletion as well so that we don't try to
|
| + // reuse it.
|
| + if (render_frame_host->frame_tree_node()->IsMainFrame() &&
|
| + render_frame_host->render_view_host()->ref_count() <= 1) {
|
| render_frame_host->render_view_host()->set_pending_deletion();
|
| + }
|
|
|
| // |render_frame_host| will be deleted when its SwapOut ACK is received, or
|
| // when the timer times out, or when the RFHM itself is deleted (whichever
|
|
|