From 5a12ccd97f0a9504f6d4178600ca45c00dc6af8a Mon Sep 17 00:00:00 2001 From: Alexey Belkevich Date: Sat, 16 Jan 2016 16:01:35 +0200 Subject: [PATCH] Fixed potential crash on reachability status check --- Classes/Public/SCNetworkReachability.m | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Classes/Public/SCNetworkReachability.m b/Classes/Public/SCNetworkReachability.m index c0eaaa2..6ad7635 100644 --- a/Classes/Public/SCNetworkReachability.m +++ b/Classes/Public/SCNetworkReachability.m @@ -21,8 +21,8 @@ @interface SCNetworkReachability () @property (atomic, assign) BOOL isStatusValid; @property (atomic, assign) SCNetworkStatus status; +@property (atomic, copy) void (^statusBlock)(SCNetworkStatus status); @property (nonatomic, copy) void (^observationBlock)(SCNetworkStatus status); -@property (nonatomic, copy) void (^statusBlock)(SCNetworkStatus status); @end @implementation SCNetworkReachability @@ -111,7 +111,8 @@ - (void)reachabilityStatusOnDispatchQueue:(dispatch_queue_t)queue [self updateStatusBlockWithDispatchQueue:queue block:block]; if (self.isStatusValid) { - self.statusBlock(self.status); + safe_block(self.statusBlock, self.status); + self.statusBlock = nil; } } } @@ -136,7 +137,7 @@ - (void)updateStatusBlockWithDispatchQueue:(dispatch_queue_t)queue { if (self.statusBlock) { - void (^previousBlock)(SCNetworkStatus status) = self.statusBlock; + void (^previousBlock)(SCNetworkStatus) = self.statusBlock; self.statusBlock = ^(SCNetworkStatus status) { previousBlock(status);