From 4b3d18bc8afbb80c79317fc7b59c239cc95b414f Mon Sep 17 00:00:00 2001 From: Allen Winter Date: Wed, 25 Oct 2006 01:50:39 +0000 Subject: [PATCH] Fix a crash that happens when saving a message and then quickly deleting it. Patch provided by tsdgeos. Thanks Albert. Wouldn't be surprised if there was a bug report for this but heck if I can find it amongst so many BRs. CCMAIL: aacid@kde.org svn path=/branches/KDE/3.5/kdepim/; revision=598927 --- kmcommands.cpp | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/kmcommands.cpp b/kmcommands.cpp index 79762508d..70bc60580 100644 --- a/kmcommands.cpp +++ b/kmcommands.cpp @@ -811,22 +811,28 @@ void KMSaveMsgCommand::slotSaveDataReq() assert( idx >= 0 ); msg = p->getMsg(idx); - if (msg->transferInProgress()) { - QByteArray data = QByteArray(); - mJob->sendAsyncData( data ); - } - msg->setTransferInProgress( true ); - if (msg->isComplete() ) { - slotMessageRetrievedForSaving(msg); - } else { + if ( msg ) { + if ( msg->transferInProgress() ) { + QByteArray data = QByteArray(); + mJob->sendAsyncData( data ); + } + msg->setTransferInProgress( true ); + if (msg->isComplete() ) { + slotMessageRetrievedForSaving( msg ); + } else { // retrieve Message first - if (msg->parent() && !msg->isComplete() ) { - FolderJob *job = msg->parent()->createJob(msg); - job->setCancellable( false ); - connect(job, SIGNAL(messageRetrieved(KMMessage*)), - this, SLOT(slotMessageRetrievedForSaving(KMMessage*))); - job->start(); + if ( msg->parent() && !msg->isComplete() ) { + FolderJob *job = msg->parent()->createJob( msg ); + job->setCancellable( false ); + connect(job, SIGNAL( messageRetrieved( KMMessage* ) ), + this, SLOT( slotMessageRetrievedForSaving( KMMessage* ) ) ); + job->start(); + } } + } else { + mJob->slotError( KIO::ERR_ABORTED, + i18n("The message was removed while saving it. " + "It has not been saved.") ); } } else { if ( mStandAloneMessage ) {