[Bug 136365] Crash on exit in autoSaveMessage

Bruno Virlet <[email protected]>
Newsgroups gmane.comp.kde.devel.kmail
Message-ID <[email protected]>
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=136365         
bruno.virlet gmail com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |FIXED



------- Additional Comments From bruno.virlet gmail com  2007-08-13 15:06 -------
SVN commit 699554 by bvirlet:

Fixes event loop bug. Credit goes to Dirk.


BUG: 108312
BUG: 148700
BUG: 143003
BUG: 136365
BUG: 90467

Most probably closed:
BUG: 143776
BUG: 147016
BUG: 137279
BUG: 136413

https://bugzilla.novell.com/show_bug.cgi?id=226462


 M  +10 -17    kmcomposewin.cpp  
 M  +1 -1      kmcomposewin.h  


--- branches/KDE/3.5/kdepim/kmail/kmcomposewin.cpp #699553:699554
 @ -709,16 +709,22  @
 
   if ( mAutoSaveTimer )
     mAutoSaveTimer->stop();
+
   connect( this, SIGNAL( applyChangesDone( bool ) ),
-           this, SLOT( slotContinueAutoSave( bool ) ) );
+           this, SLOT( slotContinueAutoSave() ) );
   // This method is called when KMail crashed, so don't try signing/encryption
   // and don't disable controls because it is also called from a timer and
   // then the disabling is distracting.
   applyChanges( true, true );
 
   // Don't continue before the applyChanges is done!
-  qApp->enter_loop();
+}
 
+void KMComposeWin::slotContinueAutoSave()
+{
+  disconnect( this, SIGNAL( applyChangesDone( bool ) ),
+              this, SLOT( slotContinueAutoSave( bool ) ) );
+
   // Ok, it's done now - continue dead letter saving
   if ( mComposedMessages.isEmpty() ) {
     kdDebug(5006) << "Composing the message failed." << endl;
 @ -761,16 +767,9  @
   }
 
   if ( autoSaveInterval() > 0 )
-    mAutoSaveTimer->start( autoSaveInterval() );
+    updateAutoSave();
 }
 
-void KMComposeWin::slotContinueAutoSave( bool )
-{
-  disconnect( this, SIGNAL( applyChangesDone( bool ) ),
-              this, SLOT( slotContinueAutoSave( bool ) ) );
-  qApp->exit_loop();
-}
-
 //-----------------------------------------------------------------------------
 void KMComposeWin::slotView(void)
 {
 @ -2193,18 +2192,12  @
 {
   kdDebug(5006) << "entering KMComposeWin::applyChanges" << endl;
 
-  if(!mMsg) {
+  if(!mMsg || mComposer) {
     kdDebug(5006) << "KMComposeWin::applyChanges() : mMsg == 0!\n" << endl;
     emit applyChangesDone( false );
     return;
   }
 
-  if( mComposer ) {
-    kdDebug(5006) << "KMComposeWin::applyChanges() : applyChanges called twice"
-                  << endl;
-    return;
-  }
-
   // Make new job and execute it
   mComposer = new MessageComposer( this );
   connect( mComposer, SIGNAL( done( bool ) ),
--- branches/KDE/3.5/kdepim/kmail/kmcomposewin.h #699553:699554
 @ -780,7 +780,7  @
 
   void slotContinueDoSend( bool );
   void slotContinuePrint( bool );
-  void slotContinueAutoSave( bool );
+  void slotContinueAutoSave();
 
   void slotEncryptChiasmusToggled( bool );
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.