diff options
author | asvitkine@chromium.org <asvitkine@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-15 17:33:37 +0000 |
---|---|---|
committer | asvitkine@chromium.org <asvitkine@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-15 17:33:37 +0000 |
commit | 52997b3fc24a0848fa52bacaf3c0a4cacda3a11b (patch) | |
tree | 4d4c99c6475d412010b9f99d851f618c4acb831f | |
parent | 3817304a94e2a790ceaa8d22b3b15f3b4fcabc18 (diff) | |
download | chromium_src-52997b3fc24a0848fa52bacaf3c0a4cacda3a11b.zip chromium_src-52997b3fc24a0848fa52bacaf3c0a4cacda3a11b.tar.gz chromium_src-52997b3fc24a0848fa52bacaf3c0a4cacda3a11b.tar.bz2 |
[Mac] Auto-release info bar controllers in -removeAllInfoBars.
Possible crash fix for: http://crbug.com/96262
This matches the code in -removeController:.
BUG=96262
TEST=Monitor crash server.
Review URL: http://codereview.chromium.org/7904018
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@101324 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/ui/cocoa/infobars/infobar_container_controller.mm | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/chrome/browser/ui/cocoa/infobars/infobar_container_controller.mm b/chrome/browser/ui/cocoa/infobars/infobar_container_controller.mm index 0d19573..65f927a 100644 --- a/chrome/browser/ui/cocoa/infobars/infobar_container_controller.mm +++ b/chrome/browser/ui/cocoa/infobars/infobar_container_controller.mm @@ -240,6 +240,10 @@ class InfoBarNotificationObserver : public NotificationObserver { for (InfoBarController* controller in [NSArray arrayWithArray:infobarControllers_.get()]) { [[controller animatableView] stopAnimation]; + // This code can be executed while InfoBarController is still on the stack, + // so we retain and autorelease the controller to prevent it from being + // dealloc'ed too early. + [[controller retain] autorelease]; [[controller view] removeFromSuperview]; } [infobarControllers_ removeAllObjects]; |