summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-08 18:21:25 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-08 18:21:25 +0000
commit55be8880816fb39a55ad0525b65327f1ec2fe59e (patch)
tree9fdbf518e43be532a69fe29cdc4f5b72ae7d2f66 /chrome
parent55fcfecae5b94e21f98227c421d7d1525d2ba41d (diff)
downloadchromium_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.cc6
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();