From: Felix Paul Kühne Date: Sun, 14 Aug 2011 23:37:42 +0000 (+0200) Subject: macosx: fixed crash when opening multiple files using the simple open dialog X-Git-Tag: 1.2.0-pre1~1263 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=eab70f5d6e2c495e1798bccb7aa3a9cd3e3ab527;p=vlc macosx: fixed crash when opening multiple files using the simple open dialog --- diff --git a/modules/gui/macosx/open.m b/modules/gui/macosx/open.m index 0aff74e788..cb6bc1a9a3 100644 --- a/modules/gui/macosx/open.m +++ b/modules/gui/macosx/open.m @@ -1082,9 +1082,8 @@ static VLCOpen *_o_sharedMainInstance = nil; - (void)openFile { NSOpenPanel *o_open_panel = [NSOpenPanel openPanel]; - int i; b_autoplay = config_GetInt( VLCIntf, "macosx-autoplay" ); - + [o_open_panel setAllowsMultipleSelection: YES]; [o_open_panel setCanChooseDirectories: YES]; [o_open_panel setTitle: _NS("Open File")]; @@ -1092,14 +1091,20 @@ static VLCOpen *_o_sharedMainInstance = nil; if( [o_open_panel runModal] == NSOKButton ) { - NSArray *o_array = [NSArray array]; - NSArray *o_values = [[o_open_panel URLs] - sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; + NSArray * o_urls = [o_open_panel URLs]; + NSUInteger count = [o_urls count]; + NSMutableArray *o_values = [NSMutableArray arrayWithCapacity:count]; + NSMutableArray *o_array = [NSMutableArray arrayWithCapacity:count]; + for( NSUInteger i = 0; i < count; i++ ) + { + [o_values addObject: [[o_urls objectAtIndex: i] path]]; + } + [o_values sortUsingSelector:@selector(caseInsensitiveCompare:)]; - for( i = 0; i < (int)[o_values count]; i++) + for( NSUInteger i = 0; i < count; i++ ) { NSDictionary *o_dic; - char *psz_uri = make_URI([[[o_values objectAtIndex:i] path] UTF8String], "file"); + char *psz_uri = make_URI([[o_values objectAtIndex:i] UTF8String], "file"); if( !psz_uri ) continue; @@ -1107,7 +1112,7 @@ static VLCOpen *_o_sharedMainInstance = nil; free( psz_uri ); - o_array = [o_array arrayByAddingObject: o_dic]; + [o_array addObject: o_dic]; } if( b_autoplay ) [o_playlist appendArray: o_array atPos: -1 enqueue:NO];