]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix another bat seg fault
authorKern Sibbald <kern@sibbald.com>
Sun, 12 Sep 2010 12:59:55 +0000 (14:59 +0200)
committerKern Sibbald <kern@sibbald.com>
Sun, 12 Sep 2010 13:00:33 +0000 (15:00 +0200)
bacula/src/qt-console/console/console.cpp
bacula/src/qt-console/mainwin.cpp
bacula/src/qt-console/mainwin.h
bacula/src/qt-console/restore/restoretree.cpp

index 7a6790e00d3a83cf7d2a920a92f03dba8fefc78c..b421fc0029e8738edc99e45134aeb0e90e62bf44 100644 (file)
@@ -292,10 +292,10 @@ bool Console::sql_cmd(int &conn, const char *query, QStringList &results, bool d
       return false;
    }
 
-   if (mainWin->m_connDebug)
-      Pmsg2(000, "sql_cmd conn %i %s\n", conn, query);
-   if (donotify)
+   if (mainWin->m_connDebug) Pmsg2(000, "sql_cmd conn %i %s\n", conn, query);
+   if (donotify) {
       dircomm->notify(false);
+   }
    mainWin->waitEnter();
    
    pm_strcpy(cmd, ".sql query=\"");
@@ -314,15 +314,17 @@ bool Console::sql_cmd(int &conn, const char *query, QStringList &results, bool d
          QString dum = dircomm->msg();
          if ((dum.left(6) == "*None*")) doappend = false;
       }
-      if (doappend)
+      if (doappend) {
          results << dircomm->msg();
+      }
       first = false;
    }
-   if (donotify)
+   if (donotify) {
       dircomm->notify(true);
+   }
    discardToPrompt(conn);
    mainWin->waitExit();
-   return true;              /* ***FIXME*** return any command error */
+   return !mainWin->isClosing();      /* return false if closing */
 }
 
 /* 
index eca18bd28d4c407fdf5a755c8785fdccb39ebbd5..15d75658251e0c57b5dd46999817ba4a7f4c87d7 100644 (file)
@@ -177,11 +177,12 @@ void MainWin::createPages()
       new MediaList();
       new MediaView();
       new Storage();
-      if (m_openBrowser)
+      if (m_openBrowser) {
          new restoreTree();
-      if (m_openDirStat)
+      }
+      if (m_openDirStat) {
          new DirStat();
-
+      }
       treeWidget->expandItem(topItem);
       tabWidget->setCurrentWidget(m_currentConsole);
    }
@@ -323,10 +324,14 @@ void MainWin::waitEnter()
  */
 void MainWin::waitExit()
 {
+   if (!m_waitState || m_isClosing) {
+      return;
+   }
    m_waitState = false;
    if (mainWin->m_connDebug) Pmsg0(000, "Exiting Wait State\n");
-   if (m_waitTreeItem != treeWidget->currentItem())
+   if (m_waitTreeItem && (m_waitTreeItem != treeWidget->currentItem())) {
       treeWidget->setCurrentItem(m_waitTreeItem);
+   }
    if (m_doConnect) {
       connectSignals();
       connectConsoleSignals();
index 4a25d7e5aec9401c1a4730fdb8531703a6e22341..6203f03b1101cc5b644d5e0cac170f4109d05851 100644 (file)
@@ -61,6 +61,7 @@ public:
    void hashRemove(QTreeWidgetItem *, Pages *);
    void setMessageIcon();
    bool getWaitState() {return m_waitState; };
+   bool isClosing() {return m_isClosing; };
    Console *currentConsole();
    QTreeWidgetItem *currentTopItem();
    Pages* getFromHash(QTreeWidgetItem *);
index f6b79f0b2874d43c6270ddaadfb13c301df6b5a9..82fd10ad80de9286d1ea1514e89ace09deb24604 100644 (file)
@@ -275,6 +275,8 @@ void restoreTree::populateDirectoryTree()
                fieldcnt += 1;
             }
          }
+      } else {
+         return;
       }
    } else {
      QMessageBox::warning(this, "Bat",