Browse Source

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 years ago
parent
commit
99514ecaea

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