diff options
author | eroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-19 17:30:04 +0000 |
---|---|---|
committer | eroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-19 17:30:04 +0000 |
commit | 837db2de2c01bce19a7c68d6ef4770e5951b5f5a (patch) | |
tree | 0bf580d7ec99398bcd2baa7b3722bca724043fa4 /chrome | |
parent | 566a8e0ace53b372283cea3af74d5d0bc3554210 (diff) | |
download | chromium_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.cc | 9 |
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; } |