Преглед на файлове

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