mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-10-09 03:20:48 +00:00
Merge commit '0430ea5e493ed6ddcc97246b5a35c3ea630fecf4' into macos-9.4-1-release
This commit is contained in:
commit
6b723db80c
@ -1 +1 @@
|
||||
44eed22b384449bcec8962f2fddbfebd
|
||||
3a64b94cc76109006731756f85403c85
|
||||
|
@ -172,7 +172,7 @@ public final class MultilineTextWithEntitiesComponent: Component {
|
||||
self.textNode.longTapAttributeAction = component.longTapAction
|
||||
|
||||
if case let .curve(duration, _) = transition.animation, let previousText = previousText, previousText != attributedString.string {
|
||||
if let snapshotView = self.snapshotView(afterScreenUpdates: false) {
|
||||
if let snapshotView = self.snapshotContentTree() {
|
||||
snapshotView.center = self.center
|
||||
self.superview?.addSubview(snapshotView)
|
||||
|
||||
|
@ -205,7 +205,7 @@
|
||||
return;
|
||||
|
||||
[strongController dismissAnimated:true];
|
||||
if (strongSelf != nil) {
|
||||
if (strongSelf != nil && strongSelf.requestAvatarEditor) {
|
||||
strongSelf.requestAvatarEditor(^(UIImage *image, void (^commit)(void)) {
|
||||
__strong TGMediaAvatarMenuMixin *strongSelf = weakSelf;
|
||||
if (strongSelf == nil)
|
||||
|
@ -61,8 +61,10 @@ public final class ManagedFile {
|
||||
if let queue = self.queue {
|
||||
assert(queue.isCurrent())
|
||||
}
|
||||
close(self.fd)
|
||||
self.isClosed = true
|
||||
if !self.isClosed {
|
||||
close(self.fd)
|
||||
self.isClosed = true
|
||||
}
|
||||
}
|
||||
|
||||
public func write(_ data: UnsafeRawPointer, count: Int) -> Int {
|
||||
|
@ -727,27 +727,57 @@ public final class PostboxDecoder {
|
||||
case .Double:
|
||||
offset += 8
|
||||
case .String:
|
||||
var length: Int32 = 0
|
||||
memcpy(&length, bytes + offset, 4)
|
||||
offset += 4 + Int(length)
|
||||
if offset + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var valueLength: Int32 = 0
|
||||
memcpy(&valueLength, bytes + offset, 4)
|
||||
offset += 4 + Int(valueLength)
|
||||
case .Object:
|
||||
var length: Int32 = 0
|
||||
memcpy(&length, bytes + (offset + 4), 4)
|
||||
offset += 8 + Int(length)
|
||||
if offset + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var valueLength: Int32 = 0
|
||||
memcpy(&valueLength, bytes + (offset + 4), 4)
|
||||
offset += 8 + Int(valueLength)
|
||||
case .Int32Array:
|
||||
var length: Int32 = 0
|
||||
memcpy(&length, bytes + offset, 4)
|
||||
offset += 4 + Int(length) * 4
|
||||
if offset + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var valueLength: Int32 = 0
|
||||
memcpy(&valueLength, bytes + offset, 4)
|
||||
offset += 4 + Int(valueLength) * 4
|
||||
case .Int64Array:
|
||||
var length: Int32 = 0
|
||||
memcpy(&length, bytes + offset, 4)
|
||||
offset += 4 + Int(length) * 8
|
||||
if offset + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var valueLength: Int32 = 0
|
||||
memcpy(&valueLength, bytes + offset, 4)
|
||||
offset += 4 + Int(valueLength) * 8
|
||||
case .ObjectArray:
|
||||
if offset + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var subLength: Int32 = 0
|
||||
memcpy(&subLength, bytes + offset, 4)
|
||||
offset += 4
|
||||
var i: Int32 = 0
|
||||
while i < subLength {
|
||||
if offset + 4 + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var objectLength: Int32 = 0
|
||||
memcpy(&objectLength, bytes + (offset + 4), 4)
|
||||
offset += 8 + Int(objectLength)
|
||||
@ -759,32 +789,62 @@ public final class PostboxDecoder {
|
||||
}
|
||||
return true
|
||||
case .ObjectDictionary:
|
||||
var length: Int32 = 0
|
||||
memcpy(&length, bytes + offset, 4)
|
||||
if offset + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var valueLength: Int32 = 0
|
||||
memcpy(&valueLength, bytes + offset, 4)
|
||||
offset += 4
|
||||
var i: Int32 = 0
|
||||
while i < length {
|
||||
while i < valueLength {
|
||||
if offset + 4 + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var keyLength: Int32 = 0
|
||||
memcpy(&keyLength, bytes + (offset + 4), 4)
|
||||
offset += 8 + Int(keyLength)
|
||||
|
||||
if offset + 4 + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var valueLength: Int32 = 0
|
||||
memcpy(&valueLength, bytes + (offset + 4), 4)
|
||||
offset += 8 + Int(valueLength)
|
||||
i += 1
|
||||
}
|
||||
case .Bytes:
|
||||
var length: Int32 = 0
|
||||
memcpy(&length, bytes + offset, 4)
|
||||
offset += 4 + Int(length)
|
||||
if offset + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var valueLength: Int32 = 0
|
||||
memcpy(&valueLength, bytes + offset, 4)
|
||||
offset += 4 + Int(valueLength)
|
||||
case .Nil:
|
||||
break
|
||||
case .StringArray, .BytesArray:
|
||||
var length: Int32 = 0
|
||||
memcpy(&length, bytes + offset, 4)
|
||||
if offset + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var valueLength: Int32 = 0
|
||||
memcpy(&valueLength, bytes + offset, 4)
|
||||
offset += 4
|
||||
var i: Int32 = 0
|
||||
while i < length {
|
||||
if offset + 4 > length {
|
||||
offset = 0
|
||||
return false
|
||||
}
|
||||
|
||||
var stringLength: Int32 = 0
|
||||
memcpy(&stringLength, bytes + offset, 4)
|
||||
offset += 4 + Int(stringLength)
|
||||
|
@ -628,7 +628,7 @@ public final class RollingText: Component {
|
||||
|
||||
self.containerView.layer.removeAnimation(forKey: "opacity")
|
||||
}
|
||||
if let snapshotView = self.containerView.snapshotView(afterScreenUpdates: true) {
|
||||
if let snapshotView = self.containerView.snapshotContentTree() {
|
||||
let horizontalOffset = boundingRect.width - snapshotView.frame.width
|
||||
let verticalOffset: CGFloat = 12.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"app": "9.4.3",
|
||||
"app": "9.5",
|
||||
"bazel": "5.3.1",
|
||||
"xcode": "14.2"
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user