From b59b42e6b5047091766bc4470f9a6b38c93ee6bf Mon Sep 17 00:00:00 2001 From: Reid Main Date: Wed, 16 Jan 2013 14:53:38 -0500 Subject: [PATCH] Fixed bug where NSInvalidArgumentException was thrown if an image with a nil URL was downloaded. --- SDWebImage/SDWebImageDownloader.m | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/SDWebImage/SDWebImageDownloader.m b/SDWebImage/SDWebImageDownloader.m index deca6ff..5e3d097 100644 --- a/SDWebImage/SDWebImageDownloader.m +++ b/SDWebImage/SDWebImageDownloader.m @@ -144,6 +144,17 @@ static NSString *const kCompletedCallbackKey = @"completed"; - (void)addProgressCallback:(void (^)(NSUInteger, long long))progressBlock andCompletedBlock:(void (^)(UIImage *, NSData *data, NSError *, BOOL))completedBlock forURL:(NSURL *)url createCallback:(void (^)())createCallback { + // The URL will be used as the key to the callbacks dictionary so it cannot be nil. If it is nil immediately call the completed block with no image or data and an error. + if(url == nil) + { + if (completedBlock != nil) + { + NSError *error = [NSError errorWithDomain:@"SDWebImageErrorDomain" code:0 userInfo:@{NSLocalizedDescriptionKey: @"Could not load an image because URL was nil."}]; + completedBlock(nil, nil, error, NO); + } + return; + } + dispatch_barrier_sync(self.barrierQueue, ^ { BOOL first = NO;