소스 검색

VLCNetworkServerBrowserViewController: add sanity checks to prevent out-of-bounds exceptions

This can occur if the list of items changes while the user navigates the list and decides for an item to play

(cherry picked from commit 7d4bfe42b1f323bbbd7b033e3d197c0309f2cd4c)
Felix Paul Kühne 7 년 전
부모
커밋
99514ecaea
1개의 변경된 파일8개의 추가작업 그리고 3개의 파일을 삭제
  1. 8 3
      Sources/LocalNetworkConnectivity/VLCNetworkServerBrowserViewController.m

+ 8 - 3
Sources/LocalNetworkConnectivity/VLCNetworkServerBrowserViewController.m

@@ -188,14 +188,19 @@
     id<VLCNetworkServerBrowserItem> item;
     NSInteger row = indexPath.row;
     BOOL singlePlayback = ![[NSUserDefaults standardUserDefaults] boolForKey:kVLCAutomaticallyPlayNextItem];
-    if (self.searchController.isActive) {
+    if (self.searchController.isActive && row < _searchArray.count) {
         item = _searchArray[row];
         singlePlayback = YES;
     } else {
-        item = self.serverBrowser.items[row];
+        NSArray *items = self.serverBrowser.items;
+        if (row < items.count) {
+            item = items[row];
+        }
     }
 
-    [self didSelectItem:item index:row singlePlayback:singlePlayback];
+    if (item) {
+        [self didSelectItem:item index:row singlePlayback:singlePlayback];
+    }
 
     [tableView deselectRowAtIndexPath:indexPath animated:NO];
 }