From 8dcc0ca298c2606450f2dfeceb4607994ff88f12 Mon Sep 17 00:00:00 2001 From: Allen Winter Date: Tue, 28 Apr 2009 00:34:03 +0000 Subject: [PATCH] in leui of being able to consistently reproduce this bug, backport code from e4 (by way of trunk) that should/might fix this bug. kolab/issue 2963 no need to port to e4 or trunk. svn path=/branches/kdepim/enterprise/kdepim/; revision=960137 --- kmcommands.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/kmcommands.cpp b/kmcommands.cpp index c300aedf1..7551fe332 100644 --- a/kmcommands.cpp +++ b/kmcommands.cpp @@ -2148,14 +2148,21 @@ KMCommand::Result KMMoveCommand::execute() mProgressItem->setTotalItems( mSerNumList.count() ); for ( QValueList::ConstIterator it = mSerNumList.constBegin(); it != mSerNumList.constEnd(); ++it ) { - KMFolder *srcFolder; + if ( *it == 0 ) { + kdDebug(5006) << k_funcinfo << "serial number == 0!" << endl; + continue; // invalid message + } + KMFolder *srcFolder = 0; int idx = -1; KMMsgDict::instance()->getLocation( *it, &srcFolder, &idx ); if (srcFolder == mDestFolder) continue; + assert(srcFolder); assert(idx != -1); - srcFolder->open( "kmmovecommand" ); - mOpenedFolders.append( srcFolder ); + if ( !srcFolder->isOpened() ) { + srcFolder->open( "kmmovecommand" ); + mOpenedFolders.append( srcFolder ); + } msg = srcFolder->getMsg(idx); if ( !msg ) { kdDebug(5006) << k_funcinfo << "No message found for serial number " << *it << endl;