summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authoreroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-19 17:30:04 +0000
committereroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-19 17:30:04 +0000
commit837db2de2c01bce19a7c68d6ef4770e5951b5f5a (patch)
tree0bf580d7ec99398bcd2baa7b3722bca724043fa4 /chrome
parent566a8e0ace53b372283cea3af74d5d0bc3554210 (diff)
downloadchromium_src-837db2de2c01bce19a7c68d6ef4770e5951b5f5a.zip
chromium_src-837db2de2c01bce19a7c68d6ef4770e5951b5f5a.tar.gz
chromium_src-837db2de2c01bce19a7c68d6ef4770e5951b5f5a.tar.bz2
Speculative fix for a crash where RenderWidgetHostViewWin tries to access a deleted RenderWidgetHost during OnFinalMessage().
BUG=24248 Review URL: http://codereview.chromium.org/284019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29418 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/renderer_host/render_widget_host_view_win.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/chrome/browser/renderer_host/render_widget_host_view_win.cc b/chrome/browser/renderer_host/render_widget_host_view_win.cc
index 2ad63e5..5d58849 100644
--- a/chrome/browser/renderer_host/render_widget_host_view_win.cc
+++ b/chrome/browser/renderer_host/render_widget_host_view_win.cc
@@ -630,6 +630,12 @@ void RenderWidgetHostViewWin::Destroy() {
// triggering further destructions. The deletion of this is handled by
// OnFinalMessage();
close_on_deactivate_ = false;
+
+ // In case OnFinalMessage() does not get called before DestroyWindow()
+ // returns, make sure we don't try to access |render_widget_host_| later.
+ // http://crbug.com/24248
+ render_widget_host_ = NULL;
+
DestroyWindow();
}
@@ -1266,7 +1272,8 @@ LRESULT RenderWidgetHostViewWin::OnGetObject(UINT message, WPARAM wparam,
}
void RenderWidgetHostViewWin::OnFinalMessage(HWND window) {
- render_widget_host_->ViewDestroyed();
+ if (render_widget_host_)
+ render_widget_host_->ViewDestroyed();
delete this;
}