diff --git a/kmymoney/plugins/xml/xmlstorage.cpp b/kmymoney/plugins/xml/xmlstorage.cpp --- a/kmymoney/plugins/xml/xmlstorage.cpp +++ b/kmymoney/plugins/xml/xmlstorage.cpp @@ -452,14 +452,18 @@ } } + // Permissions to apply to new file + QFileDevice::Permissions fmode = QFileDevice::ReadUser | QFileDevice::WriteUser; // Create a temporary file if needed QString writeFile = localFile; QTemporaryFile tmpFile(writeFile); if (QFile::exists(localFile)) { tmpFile.open(); writeFile = tmpFile.fileName(); tmpFile.close(); + // Since file is going to be replaced, stash the original permissions so they can be restored + fmode = QFile::permissions(localFile); } /** @@ -530,7 +534,7 @@ if (!QFile::remove(localFile) || !QFile::copy(writeFile, localFile)) throw MYMONEYEXCEPTION(QString::fromLatin1("Failure while writing to '%1'").arg(localFile)); } - QFile::setPermissions(localFile, QFileDevice::ReadUser | QFileDevice::WriteUser); + QFile::setPermissions(localFile, fmode); pWriter->setProgressCallback(0); }