[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kmail-devel
Subject:    easy but may be suboptimal fixes for recent kmail crashes
From:       "Christophe Prud'homme" <prudhomm () mit ! edu>
Date:       2003-06-30 16:58:59
[Download RAW message or body]

Hello

I experience since yesterday(with the freshest CVS actually) crashes in kmail
I looked a bit and I made the following two changes below
that solve my problems
it seems that some msg can be 0 sometimes

for me it fixes :
* crash during filtering
* crash when looking at an imap folder and switching to a non imap folder
* crash while deleting a file

Index: kmfolder.cpp
===================================================================
RCS file: /home/kde/kdepim/kmail/kmfolder.cpp,v
retrieving revision 1.270
diff -u -r1.270 kmfolder.cpp
--- kmfolder.cpp        28 Jun 2003 16:43:11 -0000      1.270
+++ kmfolder.cpp        30 Jun 2003 16:54:54 -0000
@@ -556,8 +556,11 @@
     // Remove this message from all jobs' list it might still be on.
     // setIndexEntry deletes the message.
     KMMessage *msg = static_cast<KMMessage*>(mb);
-    ignoreJobsForMessage( msg );
-    return setIndexEntry( idx, msg );
+    if ( msg )
+    {
+       ignoreJobsForMessage( msg );
+       return setIndexEntry( idx, msg );
+    }
   }

   return 0;
Index: kmfolderimap.cpp
===================================================================
RCS file: /home/kde/kdepim/kmail/kmfolderimap.cpp,v
retrieving revision 1.111
diff -u -r1.111 kmfolderimap.cpp
--- kmfolderimap.cpp    26 Jun 2003 22:04:28 -0000      1.111
+++ kmfolderimap.cpp    30 Jun 2003 16:54:55 -0000
@@ -85,7 +85,7 @@
   while (--idx >= 0) {
     if ( mMsgList[idx]->isMessage() ) {
       KMMessage *msg = static_cast<KMMessage*>(mMsgList[idx]);
-      if (msg->transferInProgress())
+      if ( msg && msg->transferInProgress())
           msg->setTransferInProgress( false );
     }
   }
@@ -441,7 +441,8 @@
   if (!mb->isMessage()) readMsg(idx);

   KMMessage *msg = static_cast<KMMessage*>(mb);
-  deleteMessage(msg);
+  if ( msg )
+      deleteMessage(msg);

   mLastUid = 0;
   return KMFolderImapInherited::take(idx);

-- 
 Christophe Prud'homme
 Visiting Research Scientist in the Jacques Louis Lions Laboratory(Paris)
 MIT - Research Scientist - Web: http://augustine.mit.edu/~prudhomm
 Tel: +33 (0)1 44 27 71 97
 Tel: +32 (0)2 734 8280

_______________________________________________
KMail Developers mailing list
kmail@mail.kde.org
http://mail.kde.org/mailman/listinfo/kmail
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic