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
wilder-work
Michael Haeckel 26 years ago
parent ad37e4c0a3
commit 70a2eeb128
  1. 2
      kmcomposewin.cpp
  2. 16
      kmheaders.cpp
  3. 1
      kmreaderwin.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));

@ -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<KMMessage*>(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();

@ -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) {

Loading…
Cancel
Save