summaryrefslogtreecommitdiff
path: root/platform/darwin/src/MGLOfflinePack.mm
diff options
context:
space:
mode:
Diffstat (limited to 'platform/darwin/src/MGLOfflinePack.mm')
-rw-r--r--platform/darwin/src/MGLOfflinePack.mm11
1 files changed, 8 insertions, 3 deletions
diff --git a/platform/darwin/src/MGLOfflinePack.mm b/platform/darwin/src/MGLOfflinePack.mm
index 0f2e8180fa..5f4ae9c838 100644
--- a/platform/darwin/src/MGLOfflinePack.mm
+++ b/platform/darwin/src/MGLOfflinePack.mm
@@ -135,10 +135,15 @@ private:
- (void)invalidate {
MGLLogInfo(@"Invalidating pack.");
MGLAssert(_state != MGLOfflinePackStateInvalid, @"Cannot invalidate an already invalid offline pack.");
+ MGLAssert(self.mbglOfflineRegion, @"Should have a valid region");
- self.state = MGLOfflinePackStateInvalid;
- _mbglFileSource->setOfflineRegionObserver(*self.mbglOfflineRegion, nullptr);
- self.mbglOfflineRegion = nil;
+ @synchronized (self) {
+ self.state = MGLOfflinePackStateInvalid;
+ if (self.mbglOfflineRegion) {
+ _mbglFileSource->setOfflineRegionObserver(*self.mbglOfflineRegion, nullptr);
+ }
+ self.mbglOfflineRegion = nil;
+ }
}
- (void)setState:(MGLOfflinePackState)state {