Fix that the downloader operation may not call the completion block in race condition, which the operation we get is finished but not been removed from the operation array.

This commit is contained in:
DreamPiggy 2018-06-04 20:16:27 +08:00
parent 5062a7653e
commit 48acb8e423
1 changed files with 2 additions and 1 deletions

View File

@ -275,7 +275,8 @@
LOCK(self.operationsLock);
SDWebImageDownloaderOperation *operation = [self.URLOperations objectForKey:url];
if (!operation) {
// There is a case that the operation may be marked as finished, but not been removed from `self.URLOperations`.
if (!operation || operation.isFinished) {
operation = createCallback();
__weak typeof(self) wself = self;
operation.completionBlock = ^{