diff options
author | jeremy@chromium.org <jeremy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-08 04:20:07 +0000 |
---|---|---|
committer | jeremy@chromium.org <jeremy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-08 04:20:07 +0000 |
commit | c02c8a6860c9163b3225d378636b08fa6e3d848a (patch) | |
tree | cd03ef91d73fa12b09c6e0a4c910ceef0d5097c7 /chrome | |
parent | 16e0efd89b890932ff32fb612228b48dea4371fa (diff) | |
download | chromium_src-c02c8a6860c9163b3225d378636b08fa6e3d848a.zip chromium_src-c02c8a6860c9163b3225d378636b08fa6e3d848a.tar.gz chromium_src-c02c8a6860c9163b3225d378636b08fa6e3d848a.tar.bz2 |
Speculative Crash fix: Return early if user cancels save dialog.
I'm not able to repro the crash, but this seems safer overall.
BUG=16081
TEST=Right click an image, Save as, Chrome should not crash.
Review URL: http://codereview.chromium.org/149244
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20132 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/cocoa/shell_dialogs_mac.mm | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/chrome/browser/cocoa/shell_dialogs_mac.mm b/chrome/browser/cocoa/shell_dialogs_mac.mm index d439a5a..400a848 100644 --- a/chrome/browser/cocoa/shell_dialogs_mac.mm +++ b/chrome/browser/cocoa/shell_dialogs_mac.mm @@ -314,25 +314,29 @@ NSView* SelectFileDialogImpl::GetAccessoryView(const FileTypeInfo* file_types, bool isMulti = type == SelectFileDialog::SELECT_OPEN_MULTI_FILE; std::vector<FilePath> paths; - if (type == SelectFileDialog::SELECT_SAVEAS_FILE) { - paths.push_back(FilePath(base::SysNSStringToUTF8([panel filename]))); - - NSView* accessoryView = [panel accessoryView]; - if (accessoryView) { - NSPopUpButton* popup = [accessoryView viewWithTag:kFileTypePopupTag]; - if (popup) { - index = [popup indexOfSelectedItem]+1; // file type indexes are 1-based + bool did_cancel = returnCode == NSCancelButton; + if (!did_cancel) { + if (type == SelectFileDialog::SELECT_SAVEAS_FILE) { + paths.push_back(FilePath(base::SysNSStringToUTF8([panel filename]))); + + NSView* accessoryView = [panel accessoryView]; + if (accessoryView) { + NSPopUpButton* popup = [accessoryView viewWithTag:kFileTypePopupTag]; + if (popup) { + // File type indexes are 1-based. + index = [popup indexOfSelectedItem] + 1; + } } + } else { + NSArray* filenames = [panel filenames]; + for (NSString* filename in filenames) + paths.push_back(FilePath(base::SysNSStringToUTF8(filename))); } - } else { - NSArray* filenames = [panel filenames]; - for (NSString* filename in filenames) - paths.push_back(FilePath(base::SysNSStringToUTF8(filename))); } selectFileDialogImpl_->FileWasSelected(panel, parentWindow, - returnCode==NSCancelButton, + did_cancel, isMulti, paths, index); |