From 722de35940fadb7be9cde29e103d251742ffb3ec Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Sun, 12 Oct 2008 13:59:08 +0200 Subject: [PATCH] fixing weired behavior and/or crashes for dynamic backlog replay --- src/client/messagemodel.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/client/messagemodel.cpp b/src/client/messagemodel.cpp index 07d0ccaf..7297f4b2 100644 --- a/src/client/messagemodel.cpp +++ b/src/client/messagemodel.cpp @@ -121,6 +121,7 @@ void MessageModel::insertMessageGroup(const QList &msglist) { delete oldItem; endRemoveRows(); start--; + end--; } } @@ -148,17 +149,22 @@ void MessageModel::insertMessageGroup(const QList &msglist) { if(dayChangeItem) end++; + Q_ASSERT(start == 0 || _messageList[start - 1]->msgId() < msglist.first().msgId()); + Q_ASSERT(start == _messageList.count() || _messageList[start]->msgId() > msglist.last().msgId()); beginInsertRows(QModelIndex(), start, end); + int pos = start; foreach(Message msg, msglist) { - _messageList.insert(start, createMessageModelItem(msg)); - start++; + _messageList.insert(pos, createMessageModelItem(msg)); + pos++; } if(dayChangeItem) { - _messageList.insert(start, dayChangeItem); - start++; // needed for the following assert + _messageList.insert(pos, dayChangeItem); + pos++; // needed for the following assert } endInsertRows(); - Q_ASSERT(start - 1 == end); + Q_ASSERT(start == 0 || _messageList[start - 1]->msgId() < _messageList[start]->msgId()); + Q_ASSERT(end + 1 == _messageList.count() || _messageList[end]->msgId() < _messageList[end + 1]->msgId()); + Q_ASSERT(pos - 1 == end); } int MessageModel::insertMessagesGracefully(const QList &msglist) { @@ -310,7 +316,6 @@ int MessageModel::indexForId(MsgId id) { void MessageModel::changeOfDay() { _dayChangeTimer.setInterval(86400000); - qDebug() << _nextDayChange; if(!_messageList.isEmpty()) { int idx = _messageList.count(); while(idx > 0 && _messageList[idx - 1]->timeStamp() > _nextDayChange) { -- 2.20.1