Skip to content

Commit c88c7d0

Browse files
authored
Merge pull request contentful#64 from contentful/develop
0.4.1
2 parents 00f626e + 6e85fb2 commit c88c7d0

File tree

5 files changed

+26
-16
lines changed

5 files changed

+26
-16
lines changed

.env

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
CONTENTFUL_SDK_VERSION=0.4.0
1+
CONTENTFUL_SDK_VERSION=0.4.1

.envrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export CONTENFUL_SDK_VERSION=0.4.0
1+
export CONTENFUL_SDK_VERSION=0.4.1

CHANGELOG.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,19 @@ This project adheres to [Semantic Versioning](http://semver.org/) starting from
1414
## Table of contents
1515

1616
#### 0.x Releases
17-
- `0.4.x` Releases - [0.4.0](#040)
17+
- `0.4.x` Releases - [0.4.0](#040) | [0.4.1](#041)
1818
- `0.3.x` Releases - [0.3.0](#030) | [0.3.1](#031)
1919

2020
---
2121

22+
## [`0.4.1`](https://github.com/contentful/contentful.swift/releases/tag/0.4.1)
23+
Released on 2017-05-23.
24+
25+
#### Fixed
26+
- Potential crash during sync callback due to unretained `SyncSpace` instance
27+
28+
---
29+
2230
## [`0.4.0`](https://github.com/contentful/contentful.swift/releases/tag/0.4.0)
2331
Released on 2017-05-18.
2432

Config.xcconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
CONTENTFUL_SDK_VERSION=0.4.0
1+
CONTENTFUL_SDK_VERSION=0.4.1

Sources/SyncSpace.swift

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -103,35 +103,37 @@ public final class SyncSpace: ImmutableMappable {
103103
}
104104

105105
// Callback to merge the most recent sync page with the current sync space.
106-
let syncCompletion: (Result<SyncSpace>) -> Void = { [unowned self] result in
106+
let syncCompletion: (Result<SyncSpace>) -> Void = { [weak self] result in
107+
108+
guard let strongSelf = self else { return }
107109

108110
switch result {
109111
case .success(let syncSpace):
110112

111113
for asset in syncSpace.assets {
112-
self.delegate?.create(asset: asset)
113-
self.assetsMap[asset.sys.id] = asset
114+
strongSelf.delegate?.create(asset: asset)
115+
strongSelf.assetsMap[asset.sys.id] = asset
114116
}
115117

116118
for entry in syncSpace.entries {
117-
entry.resolveLinks(against: self.entries + syncSpace.entries, and: self.assets)
118-
self.delegate?.create(entry: entry)
119-
self.entriesMap[entry.sys.id] = entry
119+
entry.resolveLinks(against: strongSelf.entries + syncSpace.entries, and: strongSelf.assets)
120+
strongSelf.delegate?.create(entry: entry)
121+
strongSelf.entriesMap[entry.sys.id] = entry
120122
}
121123

122124
for deletedAssetId in syncSpace.deletedAssets {
123-
self.delegate?.delete(assetWithId: deletedAssetId)
124-
self.assetsMap.removeValue(forKey: deletedAssetId)
125+
strongSelf.delegate?.delete(assetWithId: deletedAssetId)
126+
strongSelf.assetsMap.removeValue(forKey: deletedAssetId)
125127
}
126128

127129
for deletedEntryId in syncSpace.deletedEntries {
128-
self.delegate?.delete(entryWithId: deletedEntryId)
129-
self.entriesMap.removeValue(forKey: deletedEntryId)
130+
strongSelf.delegate?.delete(entryWithId: deletedEntryId)
131+
strongSelf.entriesMap.removeValue(forKey: deletedEntryId)
130132
}
131133

132-
self.syncToken = syncSpace.syncToken
134+
strongSelf.syncToken = syncSpace.syncToken
133135

134-
completion(.success(self))
136+
completion(.success(strongSelf))
135137
case .error(let error):
136138
completion(.error(error))
137139
}

0 commit comments

Comments
 (0)