From d0d1fa1844b43a4ec7947c249f56461f619201a2 Mon Sep 17 00:00:00 2001 From: nowrep Date: Thu, 6 Mar 2014 16:18:58 +0100 Subject: [PATCH] [Session] Save session to QByteArray and then write it to file Instead of appending data to file, write all session data at once. This should help preventing corrupting session.dat file. Closes #1247 --- src/lib/app/mainapplication.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/lib/app/mainapplication.cpp b/src/lib/app/mainapplication.cpp index fcc0e57ba..cdfa4f16c 100644 --- a/src/lib/app/mainapplication.cpp +++ b/src/lib/app/mainapplication.cpp @@ -1188,9 +1188,8 @@ bool MainApplication::saveStateSlot() return false; } - QFile file(m_activeProfil + "session.dat"); - file.open(QIODevice::WriteOnly); - QDataStream stream(&file); + QByteArray data; + QDataStream stream(&data, QIODevice::WriteOnly); stream << Qz::sessionVersion; stream << m_mainWindows.count(); @@ -1208,13 +1207,17 @@ bool MainApplication::saveStateSlot() stream << qz->saveState(); } } - file.close(); BrowserWindow* qupzilla_ = getWindow(); if (qupzilla_ && m_mainWindows.count() == 1) { qupzilla_->tabWidget()->savePinnedTabs(); } + QFile file(m_activeProfil + QLatin1String("session.dat")); + file.open(QIODevice::WriteOnly); + file.write(data); + file.close(); + return true; }