Index: chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm |
diff --git a/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm b/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm |
index c899d04d9aafa5ba44b534c5867730a158751f6f..23590b7f37bdbfaa1c8370f58cd973008ddb638d 100644 |
--- a/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm |
+++ b/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm |
@@ -394,14 +394,22 @@ void ToolbarActionsBarBridge::ShowExtensionMessageBubble( |
} |
- (void)dealloc { |
+ [self browserWillBeDestroyed]; |
+ [super dealloc]; |
+} |
+ |
+- (void)browserWillBeDestroyed { |
+ [overflowMenu_ setDelegate:nil]; |
// Explicitly destroy the ToolbarActionsBar so all buttons get removed with a |
// valid BrowserActionsController, and so we can verify state before |
// destruction. |
- toolbarActionsBar_->DeleteActions(); |
- toolbarActionsBar_.reset(); |
+ if (toolbarActionsBar_.get()) { |
+ toolbarActionsBar_->DeleteActions(); |
+ toolbarActionsBar_.reset(); |
+ } |
DCHECK_EQ(0u, [buttons_ count]); |
[[NSNotificationCenter defaultCenter] removeObserver:self]; |
- [super dealloc]; |
+ browser_ = nullptr; |
} |
- (void)update { |