From 70a2eeb1283093807f91c019b49c6a86247aadd5 Mon Sep 17 00:00:00 2001 From: Michael Haeckel Date: Sun, 31 Dec 2000 14:26:55 +0000 Subject: [PATCH] Don't crash, when replying to a message before it is displayed in the reader window or if it is not updated, because it is a dublicate of the previos one. Don't crash, when replying to a message that was copied to another folder before. svn path=/trunk/kdenetwork/kmail/; revision=75976 --- kmcomposewin.cpp | 2 +- kmheaders.cpp | 16 +++++++++++----- kmreaderwin.cpp | 1 + 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/kmcomposewin.cpp b/kmcomposewin.cpp index 512fd3f5f..b0ba23ea1 100644 --- a/kmcomposewin.cpp +++ b/kmcomposewin.cpp @@ -1195,7 +1195,7 @@ const QCString KMComposeWin::pgpProcessedMsg(void) } else cText = codec->fromUnicode(text); - if (codec && mCharset != "utf-8" && codec->toUnicode(cText) != text) + if (!text.isEmpty() && codec && mCharset != "utf-8" && codec->toUnicode(cText) != text) { QString oldText = mEditor->text(); mEditor->setText(codec->toUnicode(cText)); diff --git a/kmheaders.cpp b/kmheaders.cpp index e809bd466..4c32df639 100644 --- a/kmheaders.cpp +++ b/kmheaders.cpp @@ -1334,7 +1334,8 @@ void KMHeaders::copyMsgToFolder (KMFolder* destFolder, int msgId) KMMessageList* msgList; KMMsgBase *msgBase; KMMessage *msg, *newMsg; - int top, rc; + int top, rc, idx; + bool isMessage; if (!destFolder) return; @@ -1345,9 +1346,14 @@ void KMHeaders::copyMsgToFolder (KMFolder* destFolder, int msgId) msgList = selectedMsgs(msgId); for (rc=0, msgBase=msgList->first(); msgBase && !rc; msgBase=msgList->next()) { - int idx = mFolder->find(msgBase); - assert(idx != -1); - msg = mFolder->getMsg(idx); + if (isMessage = msgBase->isMessage()) + { + msg = static_cast(msgBase); + } else { + idx = mFolder->find(msgBase); + assert(idx != -1); + msg = mFolder->getMsg(idx); + } newMsg = new KMMessage; newMsg->fromString(msg->asString()); @@ -1355,7 +1361,7 @@ void KMHeaders::copyMsgToFolder (KMFolder* destFolder, int msgId) rc = destFolder->addMsg(newMsg); destFolder->unGetMsg( destFolder->count() - 1 ); - mFolder->unGetMsg( idx ); + if (!isMessage) mFolder->unGetMsg( idx ); } destFolder->close(); kernel->kbp()->idle(); diff --git a/kmreaderwin.cpp b/kmreaderwin.cpp index 39af482d3..2af5ce118 100644 --- a/kmreaderwin.cpp +++ b/kmreaderwin.cpp @@ -415,6 +415,7 @@ void KMReaderWin::setMsg(KMMessage* aMsg, bool force) return; mMsg = aMsg; + if (mMsg) mMsg->setCodec(mCodec); // Avoid flicker, somewhat of a cludge if (force) {