From 5845db4568ec69c2986bb1a53599fb568e9a18f1 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Sat, 3 Nov 2018 04:37:56 +0100 Subject: [PATCH] TunnelsManager: fix use of arrayslice in addMultiple Signed-off-by: Jason A. Donenfeld --- WireGuard/WireGuard/VPN/TunnelsManager.swift | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/WireGuard/WireGuard/VPN/TunnelsManager.swift b/WireGuard/WireGuard/VPN/TunnelsManager.swift index 03470e6..925b5ce 100644 --- a/WireGuard/WireGuard/VPN/TunnelsManager.swift +++ b/WireGuard/WireGuard/VPN/TunnelsManager.swift @@ -102,17 +102,16 @@ class TunnelsManager { } func addMultiple(tunnelConfigurations: [TunnelConfiguration], completionHandler: @escaping (UInt) -> Void) { - addMultiple(tunnelConfigurations: tunnelConfigurations[0...], numberSuccessful: 0, completionHandler: completionHandler) + addMultiple(tunnelConfigurations: ArraySlice(tunnelConfigurations), numberSuccessful: 0, completionHandler: completionHandler) } private func addMultiple(tunnelConfigurations: ArraySlice, numberSuccessful: UInt, completionHandler: @escaping (UInt) -> Void) { - if tunnelConfigurations.isEmpty { + guard let head = tunnelConfigurations.first else { completionHandler(numberSuccessful) return } - let head = tunnelConfigurations.first! - let tail = tunnelConfigurations[1...] - self.add(tunnelConfiguration: head) { [weak self] (tunnel, error) in + let tail = tunnelConfigurations.dropFirst() + self.add(tunnelConfiguration: head) { [weak self, tail] (tunnel, error) in DispatchQueue.main.async { self?.addMultiple(tunnelConfigurations: tail, numberSuccessful: numberSuccessful + (error == nil ? 1 : 0), completionHandler: completionHandler) }