diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp
index 2b0950697686df56011f003c10aa23c18bb0ec83..aa765ce6f812e2942571c203d36573eca1d2ea1f 100644
--- a/src/plugins/projectexplorer/session.cpp
+++ b/src/plugins/projectexplorer/session.cpp
@@ -87,8 +87,6 @@ public:
     SessionFile();
 
 private:
-    QMap<QString, QVariant> m_values;
-
     QFutureInterface<void> future;
     friend class ProjectExplorer::SessionManager;
 };
@@ -351,6 +349,7 @@ bool SessionManager::createImpl(const QString &fileName)
         m_startupProject = 0;
         m_failedProjects.clear();
         m_depMap.clear();
+        m_values.clear();
         const QString &sessionName = sessionNameFromFileName(fileName);
         emit aboutToLoadSession(sessionName);
         m_sessionName = sessionName;
@@ -397,6 +396,7 @@ bool SessionManager::loadImpl(const QString &fileName)
     m_startupProject = 0;
     m_failedProjects.clear();
     m_depMap.clear();
+    m_values.clear();
     const QString &sessionName = sessionNameFromFileName(fileName);
     emit aboutToLoadSession(sessionName);
     m_sessionName = sessionName;
@@ -418,7 +418,7 @@ bool SessionManager::loadImpl(const QString &fileName)
     const QStringList &keys = reader.restoreValue(QLatin1String("valueKeys")).toStringList();
     foreach (const QString &key, keys) {
         QVariant value = reader.restoreValue(QLatin1String("value-") + key);
-        m_file->m_values.insert(key, value);
+        m_values.insert(key, value);
     }
 
     QStringList fileList =
@@ -571,9 +571,9 @@ bool SessionManager::save()
                      ICore::editorManager()->saveState().toBase64());
 
     QMap<QString, QVariant>::const_iterator it, end;
-    end = m_file->m_values.constEnd();
+    end = m_values.constEnd();
     QStringList keys;
-    for (it = m_file->m_values.constBegin(); it != end; ++it) {
+    for (it = m_values.constBegin(); it != end; ++it) {
         writer.saveValue(QLatin1String("value-") + it.key(), it.value());
         keys << it.key();
     }
@@ -852,21 +852,16 @@ void SessionManager::removeProjects(QList<Project *> remove)
 
 void SessionManager::setValue(const QString &name, const QVariant &value)
 {
-    if (!m_file)
-        return;
-
-    if (m_file->m_values.value(name) == value)
+    if (m_values.value(name) == value)
         return;
-    m_file->m_values.insert(name, value);
+    m_values.insert(name, value);
     markSessionFileDirty(false);
 }
 
 QVariant SessionManager::value(const QString &name)
 {
-    if (!m_file)
-        return QVariant();
-    QMap<QString, QVariant>::const_iterator it = m_file->m_values.find(name);
-    return (it == m_file->m_values.constEnd()) ? QVariant() : *it;
+    QMap<QString, QVariant>::const_iterator it = m_values.find(name);
+    return (it == m_values.constEnd()) ? QVariant() : *it;
 }
 
 QString SessionManager::activeSession() const
diff --git a/src/plugins/projectexplorer/session.h b/src/plugins/projectexplorer/session.h
index 791bcc4aa5173a911df95dd858019146205fd3b2..261b164371fae52462c33ebcc2227c924744f735 100644
--- a/src/plugins/projectexplorer/session.h
+++ b/src/plugins/projectexplorer/session.h
@@ -173,6 +173,7 @@ private:
     QList<Project *> m_projects;
     QStringList m_failedProjects;
     QMap<QString, QStringList> m_depMap;
+    QMap<QString, QVariant> m_values;
 };
 
 } // namespace ProjectExplorer