From c9e6c00a89d88f10ce2708ba7464c0304128012c Mon Sep 17 00:00:00 2001 From: Gorjan Shukov Date: Tue, 13 Aug 2024 00:59:50 +0200 Subject: [PATCH] Fix race condition crash on processPendingRequests --- Source/ResourceLoaderDelegate.swift | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Source/ResourceLoaderDelegate.swift b/Source/ResourceLoaderDelegate.swift index 41f85a0..d49aef0 100644 --- a/Source/ResourceLoaderDelegate.swift +++ b/Source/ResourceLoaderDelegate.swift @@ -21,7 +21,12 @@ final class ResourceLoaderDelegate: NSObject, AVAssetResourceLoaderDelegate, URL private var session: URLSession? private var response: URLResponse? - private var pendingRequests = Set() + private let queue = DispatchQueue(label: "com.gcd.CachingPlayerItemQueue", qos: .userInitiated, attributes: .concurrent) + private var pendingRequests: Set { + get { queue.sync { return pendingRequestsValue } } + set { queue.async(flags: .barrier) { [weak self] in self?.pendingRequestsValue = newValue } } + } + private var pendingRequestsValue = Set() private var isDownloadComplete = false private let url: URL