summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorasvitkine@chromium.org <asvitkine@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-15 17:33:37 +0000
committerasvitkine@chromium.org <asvitkine@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-15 17:33:37 +0000
commit52997b3fc24a0848fa52bacaf3c0a4cacda3a11b (patch)
tree4d4c99c6475d412010b9f99d851f618c4acb831f
parent3817304a94e2a790ceaa8d22b3b15f3b4fcabc18 (diff)
downloadchromium_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.mm4
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];