diff options
Diffstat (limited to 'chrome/browser/cocoa/bookmark_menu_bridge.mm')
-rw-r--r-- | chrome/browser/cocoa/bookmark_menu_bridge.mm | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/chrome/browser/cocoa/bookmark_menu_bridge.mm b/chrome/browser/cocoa/bookmark_menu_bridge.mm index 8d32150..f2754a0 100644 --- a/chrome/browser/cocoa/bookmark_menu_bridge.mm +++ b/chrome/browser/cocoa/bookmark_menu_bridge.mm @@ -14,12 +14,17 @@ #include "chrome/browser/profile_manager.h" BookmarkMenuBridge::BookmarkMenuBridge() - : controller_([[BookmarkMenuCocoaController alloc] initWithBridge:this]) { + : controller_([[BookmarkMenuCocoaController alloc] initWithBridge:this]), + observing_(true) { BrowserList::AddObserver(this); } BookmarkMenuBridge::~BookmarkMenuBridge() { - GetBookmarkModel()->RemoveObserver(this); + if (observing_) + BrowserList::RemoveObserver(this); + BookmarkModel *model = GetBookmarkModel(); + if (model) + model->RemoveObserver(this); [controller_ release]; } @@ -98,6 +103,7 @@ void BookmarkMenuBridge::OnBrowserRemoving(const Browser* browser) { // complete. void BookmarkMenuBridge::OnBrowserSetLastActive(const Browser* browser) { BrowserList::RemoveObserver(this); + observing_ = false; BookmarkModel* model = GetBookmarkModel(); model->AddObserver(this); if (model->IsLoaded()) |