| Index: chrome/browser/chrome_application_mac.mm
|
| diff --git a/chrome/browser/chrome_application_mac.mm b/chrome/browser/chrome_application_mac.mm
|
| index 8c7d86014781eb42b8e6523f939fb92ebd349c69..a94d3aac93e1ead66cf62586da73bee921eae574 100644
|
| --- a/chrome/browser/chrome_application_mac.mm
|
| +++ b/chrome/browser/chrome_application_mac.mm
|
| @@ -58,4 +58,29 @@
|
| // own.
|
| }
|
|
|
| +- (BOOL)sendAction:(SEL)anAction to:(id)aTarget from:(id)sender {
|
| + // The Dock menu contains an automagic section where you can select
|
| + // amongst open windows. If a window is closed via JavaScript while
|
| + // the menu is up, the menu item for that window continues to exist.
|
| + // When a window is selected this method is called with the
|
| + // now-freed window as |aTarget|. Short-circuit the call if
|
| + // |aTarget| is not a valid window.
|
| + if (anAction == @selector(_selectWindow:)) {
|
| + // Not using -[NSArray containsObject:] because |aTarget| may be a
|
| + // freed object.
|
| + BOOL found = NO;
|
| + for (NSWindow* window in [self windows]) {
|
| + if (window == aTarget) {
|
| + found = YES;
|
| + break;
|
| + }
|
| + }
|
| + if (!found) {
|
| + return NO;
|
| + }
|
| + }
|
| +
|
| + return [super sendAction:anAction to:aTarget from:sender];
|
| +}
|
| +
|
| @end
|
|
|