Bug 85733

Summary: closing kst imediatly after saving crashes
Product: [Applications] kst Reporter: Matthew Truch <matt>
Component: generalAssignee: kst
Status: RESOLVED FIXED    
Severity: crash    
Priority: NOR    
Version: 1.x   
Target Milestone: ---   
Platform: RedHat Enterprise Linux   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Matthew Truch 2004-07-23 01:35:17 UTC
Version:           0.99devel (using KDE KDE 3.2.1)
Installed from:    RedHat RPMs
OS:                Linux

If you close kst imediatly after saving the .kst file, kst will crash.

How to reproduce:  start kst, plot some data, save a .kst file of the current plot, close kst.
Comment 1 George Staikos 2004-07-23 01:43:16 UTC
On Thursday 22 July 2004 19:35, Matthew Truch wrote:
> If you close kst imediatly after saving the .kst file, kst will crash.
>
> How to reproduce:  start kst, plot some data, save a .kst file of the
> current plot, close kst. _______________________________________________

   Any backtrace?

Comment 2 Matthew Truch 2004-07-23 01:47:51 UTC
>    Any backtrace?

Not a useful one; debugging symbols are stripped (rpm package).  

Comment 3 George Staikos 2004-07-24 06:05:58 UTC
Cannot reproduce with latest code in CVS.  Please update, retest, and reopen with a backtrace if you can reproduce.
Comment 4 Matthew Truch 2004-07-25 00:07:52 UTC
The crash is still there, but only if you close with the 'x' (not via the menu).  
As always, no (useful) backtrace available.
Comment 5 George Staikos 2004-07-26 02:12:48 UTC
CVS commit by staikos: 

- remove unused methods
- fix #85821 and #85733 - the same bug
      - it was an assertion failure, and this is the one place where
        KstApp::inst() can be null, in (app) destruction.  I'm not sure it's a
        good idea to be calling update methods from a destructor though.

CCMAIL: 85821-done@bugs.kde.org, 85733-done@bugs.kde.org


  M +0 -1      kst.cpp   1.196
  M +6 -22     kstviewwindow.cpp   1.32
  M +0 -14     kstviewwindow.h   1.17


--- kdeextragear-2/kst/kst/kst.cpp  #1.195:1.196
@@ -1243,5 +1243,4 @@ void KstApp::updateDialogs() {
     changeFileDialog->updateChangeFileDialog();
     changeNptsDialog->updateChangeNptsDialog();
-    //filterListEditor->update();
     updateDataDialogs(false);
     vectorSaveDialog->init();

--- kdeextragear-2/kst/kst/kstviewwindow.cpp  #1.31:1.32
@@ -107,8 +107,4 @@ KstViewWindow::KstViewWindow(QDomElement
 void KstViewWindow::commonConstructor() {
   config = kapp->config();
-  initStatusBar();
-  initActions();
-
-  readOptions();
 
   connect(this, SIGNAL(focusInEventOccurs( KMdiChildView*)), this, SLOT(slotActivated(KMdiChildView*)));
@@ -125,23 +121,11 @@ void KstViewWindow::updateActions() {
 
 KstViewWindow::~KstViewWindow() {
-  assert(KstApp::inst());  // email George if you get this crash
   _view->release();
-  KstApp::inst()->updateDialogsForWindow();
-}
-
-
-void KstViewWindow::initActions() {
-}
-
-
-void KstViewWindow::initStatusBar() {
-}
-
-
-void KstViewWindow::saveOptions() {
-}
-
-
-void KstViewWindow::readOptions() {
+  KstApp *app = KstApp::inst(); // Can be null on exit - but then why do
+                                // we even need to be calling this function
+                                // here?  It seems wrong to me.
+  if (app) {
+    app->updateDialogsForWindow();
+  }
 }
 

--- kdeextragear-2/kst/kst/kstviewwindow.h  #1.16:1.17
@@ -53,18 +53,4 @@ class KstViewWindow : public KMdiChildVi
 
   protected:
-    /** save options to the configuration file
-     *  Geometry, Toolbar status, Statusbar status */
-    void saveOptions();
-
-    /** read options from configuration file
-     *  Geometry, Toolbar status, Statusbar status */
-    void readOptions();
-
-    /** setup kde2 actions and build the GUI */
-    void initActions();
-
-    /** sets up the statusbar for the main window */
-    void initStatusBar();
-
     /** saves the window properties for each open window during session
      * end to the session config file, including saving the currently