1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-09-18 17:10:55 +02:00

XMLFileWriter cleans up correctly in case of failure

This commit is contained in:
Paul Licameli 2017-10-23 17:08:24 -04:00
parent 874d8da025
commit a6c69dec74
2 changed files with 7 additions and 3 deletions

View File

@ -302,9 +302,9 @@ XMLFileWriter::~XMLFileWriter()
{ {
// Don't let a destructor throw! // Don't let a destructor throw!
GuardedCall< void >( [&] { GuardedCall< void >( [&] {
if (IsOpened()) { if (!mCommitted) {
// Was not committed
auto fileName = GetName(); auto fileName = GetName();
if ( IsOpened() )
CloseWithoutEndingTags(); CloseWithoutEndingTags();
::wxRemoveFile( fileName ); ::wxRemoveFile( fileName );
} }
@ -340,6 +340,8 @@ void XMLFileWriter::Commit()
throw FileException{ throw FileException{
FileException::Cause::Rename, tempPath, mCaption, mOutputPath FileException::Cause::Rename, tempPath, mCaption, mOutputPath
}; };
mCommitted = true;
} }
void XMLFileWriter::CloseWithoutEndingTags() void XMLFileWriter::CloseWithoutEndingTags()

View File

@ -111,6 +111,8 @@ class AUDACITY_DLL_API XMLFileWriter final : private wxFFile, public XMLWriter {
const bool mKeepBackup; const bool mKeepBackup;
wxFFile mBackupFile; wxFFile mBackupFile;
bool mCommitted{ false };
}; };
/// ///