Fix crashes

This commit is contained in:
Ali 2021-07-16 20:50:27 +02:00
parent 9941c499c6
commit 97cf00c506
2 changed files with 21 additions and 3 deletions

View File

@ -1025,7 +1025,14 @@ public class TextNode: ASDisplayNode {
layoutSize.height += fontLineSpacing
}
let lineRange = CFRangeMake(lastLineCharacterIndex, lineCharacterCount)
var lineRange = CFRangeMake(lastLineCharacterIndex, lineCharacterCount)
if lineRange.location + lineRange.length > attributedString.length {
lineRange.length = attributedString.length - lineRange.location
}
if lineRange.length < 0 {
break
}
let coreTextLine = CTTypesetterCreateLineWithOffset(typesetter, lineRange, 100.0)
lastLineCharacterIndex += lineCharacterCount

View File

@ -125,11 +125,14 @@ public enum PeerInfoAvatarListItem: Equatable {
}
}
public init(entry: AvatarGalleryEntry) {
public init?(entry: AvatarGalleryEntry) {
switch entry {
case let .topImage(representations, videoRepresentations, _, _, immediateThumbnailData, _):
self = .topImage(representations, videoRepresentations, immediateThumbnailData)
case let .image(_, reference, representations, videoRepresentations, _, _, _, _, immediateThumbnailData, _):
if representations.isEmpty {
return nil
}
self = .image(reference, representations, videoRepresentations, immediateThumbnailData)
}
}
@ -876,6 +879,9 @@ public final class PeerInfoAvatarListContainerNode: ASDisplayNode {
entries.append(entry)
items.append(.topImage(representations, videoRepresentations, immediateThumbnailData))
case let .image(_, reference, representations, videoRepresentations, _, _, _, _, immediateThumbnailData, _):
if representations.isEmpty {
continue
}
if image.0 == reference {
entries.insert(entry, at: 0)
items.insert(.image(reference, representations, videoRepresentations, immediateThumbnailData), at: 0)
@ -916,6 +922,9 @@ public final class PeerInfoAvatarListContainerNode: ASDisplayNode {
entries.append(entry)
items.append(.topImage(representations, videoRepresentations, immediateThumbnailData))
case let .image(_, reference, representations, videoRepresentations, _, _, _, _, immediateThumbnailData, _):
if representations.isEmpty {
continue
}
if image.0 != reference {
entries.append(entry)
items.append(.image(reference, representations, videoRepresentations, immediateThumbnailData))
@ -1014,7 +1023,9 @@ public final class PeerInfoAvatarListContainerNode: ASDisplayNode {
items.append(.custom(customNode))
}
for entry in entries {
items.append(PeerInfoAvatarListItem(entry: entry))
if let item = PeerInfoAvatarListItem(entry: entry) {
items.append(item)
}
}
strongSelf.galleryEntries = entries
strongSelf.items = items