Fix assertion violation in case of bad messages.

This commit is contained in:
John Preston 2020-10-01 17:38:49 +03:00
parent 3d20958bb4
commit b08fa069b4
1 changed files with 5 additions and 2 deletions

View File

@ -521,6 +521,7 @@ bool RepliesList::processMessagesIsEmpty(const MTPmessages_Messages &result) {
if (toFront) {
refreshed.reserve(_list.size() + list.size());
}
auto skipped = 0;
for (const auto &message : list) {
if (const auto item = owner.addNewMessage(message, clientFlags, type)) {
if (item->replyToTop() == _rootId) {
@ -530,6 +531,8 @@ bool RepliesList::processMessagesIsEmpty(const MTPmessages_Messages &result) {
_list.push_back(item->id);
}
}
} else {
++skipped;
}
}
if (toFront) {
@ -545,7 +548,7 @@ bool RepliesList::processMessagesIsEmpty(const MTPmessages_Messages &result) {
0);
}
const auto checkedCount = std::max(fullCount, nowSize);
const auto checkedCount = std::max(fullCount - skipped, nowSize);
if (_skippedBefore && _skippedAfter) {
auto &correct = toFront ? _skippedBefore : _skippedAfter;
*correct = std::max(
@ -577,7 +580,7 @@ bool RepliesList::processMessagesIsEmpty(const MTPmessages_Messages &result) {
}
}
return false;
return (list.size() > skipped);
}
} // namespace Data