sessionmanager: replace signal sessionUnloaded() by aboutToUnloadSession()

sessionUnloaded was sometimes emitted when the session manager was in
an unsafe state (between delete m_file and  m_file = new ...) leading
to crashes when slots connected to the signal accessed the sessionmanager
again. This patch moves the signal emission before  delete m_file.

Reviewed-by: dt
This commit is contained in:
hjk
2009-08-13 17:10:53 +02:00
parent a981c5c985
commit b104b43fa0
7 changed files with 12 additions and 13 deletions

View File

@@ -399,8 +399,8 @@ SessionManager::SessionManager(QObject *parent)
SessionManager::~SessionManager()
{
emit aboutToUnloadSession();
delete m_file;
emit sessionUnloaded();
}
@@ -598,8 +598,8 @@ bool SessionManager::createImpl(const QString &fileName)
}
if (success) {
emit aboutToUnloadSession();
delete m_file;
emit sessionUnloaded();
m_file = new SessionFile;
m_file->setFileName(fileName);
setStartupProject(defaultStartupProject());
@@ -633,9 +633,8 @@ bool SessionManager::loadImpl(const QString &fileName)
}
if (success) {
emit aboutToUnloadSession();
delete m_file;
m_file = 0;
emit sessionUnloaded();
m_file = new SessionFile;
if (!m_file->load(fileName)) {
QMessageBox::warning(0, tr("Error while restoring session"),