mtproto memory leak bug fix [skip ci]

This commit is contained in:
overtake 2020-01-14 16:25:56 +04:00
parent 14f9d04a36
commit d56ec6c1f2
2 changed files with 6 additions and 3 deletions

View File

@ -1394,7 +1394,7 @@ static int32_t fixedTimeDifferenceValue = 0;
NSArray *currentListeners = [[NSArray alloc] initWithArray:strongSelf->_changeListeners]; NSArray *currentListeners = [[NSArray alloc] initWithArray:strongSelf->_changeListeners];
for (id<MTContextChangeListener> listener in currentListeners) { for (id<MTContextChangeListener> listener in currentListeners) {
if ([listener respondsToSelector:@selector(contextLoggedOut:)]) if ([listener respondsToSelector:@selector(contextLoggedOut:)])
[listener contextLoggedOut:self]; [listener contextLoggedOut:strongSelf];
} }
} }
}]; }];

View File

@ -235,7 +235,7 @@ static const NSUInteger MTMaxUnacknowledgedMessageCount = 64;
if ((_mtState & MTProtoStateStopped) == 0) if ((_mtState & MTProtoStateStopped) == 0)
{ {
[self setMtState:_mtState | MTProtoStateStopped]; [self setMtState:_mtState | MTProtoStateStopped];
[_context removeChangeListener:self];
if (_transport != nil) if (_transport != nil)
{ {
_transport.delegate = nil; _transport.delegate = nil;
@ -2098,6 +2098,9 @@ static NSString *dumpHexString(NSData *data, int maxLength) {
int64_t dataMessageId = 0; int64_t dataMessageId = 0;
bool parseError = false; bool parseError = false;
NSArray *parsedMessages = [self _parseIncomingMessages:decryptedData dataMessageId:&dataMessageId parseError:&parseError]; NSArray *parsedMessages = [self _parseIncomingMessages:decryptedData dataMessageId:&dataMessageId parseError:&parseError];
for (MTIncomingMessage *message in parsedMessages) { for (MTIncomingMessage *message in parsedMessages) {
if ([message.body isKindOfClass:[MTRpcResultMessage class]]) { if ([message.body isKindOfClass:[MTRpcResultMessage class]]) {
MTRpcResultMessage *rpcResultMessage = message.body; MTRpcResultMessage *rpcResultMessage = message.body;