浏览代码

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];
 }