Make settings file recovery more robust

We should not blindly remove the leftover settings file, as the following write()
operation could fail and the user would lost all settings.
We should try renaming it instead.
This commit is contained in:
Chocobo1 2018-04-23 01:53:48 +08:00
parent 708b5a6904
commit 099314d17f
No known key found for this signature in database
GPG key ID: 210D9C873253A68C

View file

@ -241,8 +241,12 @@ QVariantHash TransactionalSettings::read()
.arg(Utils::Fs::toNativePath(newPath))
, Log::WARNING);
Utils::Fs::forceRemove(newPath);
write(res);
QString finalPath = newPath;
int index = finalPath.lastIndexOf("_new", -1, Qt::CaseInsensitive);
finalPath.remove(index, 4);
Utils::Fs::forceRemove(finalPath);
QFile::rename(newPath, finalPath);
}
else {
deserialize(m_name, res);