1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-10-13 22:21:11 +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 c874519522
commit fd2a242012
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 };
}; };
/// ///