From 12c7e7b30b2cce60884e61144449e14cca9ecb4d Mon Sep 17 00:00:00 2001 From: me_desk Date: Tue, 22 Apr 2014 16:43:53 +0000 Subject: bugfix - crash caused by empty undelivered_msgs list when message is delivered after creating new chatwindow git-svn-id: svn://localhost/project_picapica/trunk@305 fb96df88-216d-11de-830c-f3023f12d8ac --- pica-client/chatwindow.cpp | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) (limited to 'pica-client/chatwindow.cpp') diff --git a/pica-client/chatwindow.cpp b/pica-client/chatwindow.cpp index a746561..9d52ee9 100644 --- a/pica-client/chatwindow.cpp +++ b/pica-client/chatwindow.cpp @@ -219,11 +219,27 @@ void ChatWindow::msg_from_peer(QString msg) void ChatWindow::msg_delivered() { - QTextCursor c(chatw->document()); - c.setPosition(undelivered_msgs.first()); - c.deleteChar(); - c.insertText("+"); - undelivered_msgs.removeFirst(); + if (undelivered_msgs.isEmpty()) + { + // undelivered_msgs can be empty if new chatwindow instance was created + // and undelivered message from previous chat session is delivered + // after that. + + QByteArray my_id = Accounts::GetCurrentAccount().id; + QMap > undl = hist.GetUndeliveredMessages(); + + if (!undl[my_id].isEmpty()) + put_message(undl[my_id].first(), my_id , true); + } + + if (!undelivered_msgs.isEmpty()) + { + QTextCursor c(chatw->document()); + c.setPosition(undelivered_msgs.first()); + c.deleteChar(); + c.insertText("+"); + undelivered_msgs.removeFirst(); + } hist.SetDelivered(peer_id_); } -- cgit v1.2.1