Browse Source

potential problem in _YYAnimatedImageViewFetchOperation

ibireme 9 years ago
parent
commit
f5f6072415
1 changed files with 3 additions and 3 deletions
  1. 3 3
      YYImage/YYAnimatedImageView.m

+ 3 - 3
YYImage/YYAnimatedImageView.m

@@ -177,14 +177,14 @@ typedef NS_ENUM(NSUInteger, YYAnimatedImageType) {
         @autoreleasepool {
         @autoreleasepool {
             if (idx >= total) idx = 0;
             if (idx >= total) idx = 0;
             if ([self isCancelled]) break;
             if ([self isCancelled]) break;
-            view = _view;
+            __strong YYAnimatedImageView *view = _view;
+            if (!view) break;
             LOCK_VIEW(BOOL miss = (view->_buffer[@(idx)] == nil));
             LOCK_VIEW(BOOL miss = (view->_buffer[@(idx)] == nil));
-            view = nil;
+            
             if (miss) {
             if (miss) {
                 UIImage *img = [_curImage animatedImageFrameAtIndex:idx];
                 UIImage *img = [_curImage animatedImageFrameAtIndex:idx];
                 img = img.yy_imageByDecoded;
                 img = img.yy_imageByDecoded;
                 if ([self isCancelled]) break;
                 if ([self isCancelled]) break;
-                view = _view;
                 LOCK_VIEW(view->_buffer[@(idx)] = img ? img : [NSNull null]);
                 LOCK_VIEW(view->_buffer[@(idx)] = img ? img : [NSNull null]);
                 view = nil;
                 view = nil;
             }
             }