diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-08 18:21:25 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-08 18:21:25 +0000 |
commit | 55be8880816fb39a55ad0525b65327f1ec2fe59e (patch) | |
tree | 9fdbf518e43be532a69fe29cdc4f5b72ae7d2f66 /chrome | |
parent | 55fcfecae5b94e21f98227c421d7d1525d2ba41d (diff) | |
download | chromium_src-55be8880816fb39a55ad0525b65327f1ec2fe59e.zip chromium_src-55be8880816fb39a55ad0525b65327f1ec2fe59e.tar.gz chromium_src-55be8880816fb39a55ad0525b65327f1ec2fe59e.tar.bz2 |
Fix bookmark bar shutdown crash.
If the bookmarks backend finishes loading during shutdown (after the browser's gtk window has been destroyed but before the application is finished shutting down), we may try to call show() on a destroyed widget.
BUG=13575
Review URL: http://codereview.chromium.org/119317
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17881 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/gtk/bookmark_bar_gtk.cc | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/chrome/browser/gtk/bookmark_bar_gtk.cc b/chrome/browser/gtk/bookmark_bar_gtk.cc index 8fd2e4e..e5c3043 100644 --- a/chrome/browser/gtk/bookmark_bar_gtk.cc +++ b/chrome/browser/gtk/bookmark_bar_gtk.cc @@ -147,6 +147,8 @@ void BookmarkBarGtk::Init(Profile* profile) { instructions_ = gtk_alignment_new(0.0, 0.0, 1.0, 1.0); gtk_alignment_set_padding(GTK_ALIGNMENT(instructions_), 0, 0, kInstructionsPadding, 0); + g_signal_connect(instructions_, "destroy", G_CALLBACK(gtk_widget_destroyed), + &instructions_); GtkWidget* instructions_label = gtk_label_new( l10n_util::GetStringUTF8(IDS_BOOKMARKS_NO_ITEMS).c_str()); gtk_widget_modify_fg(instructions_label, GTK_STATE_NORMAL, @@ -240,6 +242,10 @@ bool BookmarkBarGtk::OnNewTabPage() { } void BookmarkBarGtk::Loaded(BookmarkModel* model) { + // If |instructions_| has been nulled, we are in the middle of browser + // shutdown. Do nothing. + if (!instructions_) + return; RemoveAllBookmarkButtons(); BookmarkNode* node = model_->GetBookmarkBarNode(); |