1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-17 00:20:06 +02:00

Bug2513: Disk exhaustion error message should be as was pre-Unitary

This commit is contained in:
Paul Licameli 2020-08-26 16:56:03 -04:00
parent 0c4514efb0
commit 2389b191f6
3 changed files with 24 additions and 4 deletions

View File

@ -17,6 +17,7 @@ Paul Licameli -- split from ProjectFileIO.cpp
#include "Internat.h"
#include "Project.h"
#include "FileException.h"
// Configuration to provide "safe" connections
static const char *SafeConfig =
@ -157,6 +158,20 @@ bool DBConnection::Close()
return true;
}
[[noreturn]] void DBConnection::ThrowException( bool write ) const
{
// Sqlite3 documentation says returned character string
// does NOT require freeing by us.
wxString dbName{ sqlite3_db_filename(mDB, "main") };
// Now we have an absolute path. Throw a message box exception that
// formats a helpful message just as used to be done before sqlite3
// was used for projects.
throw FileException{
write ? FileException::Cause::Write : FileException::Cause::Read,
dbName
};
}
bool DBConnection::SafeMode(const char *schema /* = "main" */)
{
return ModeConfig(mDB, schema, SafeConfig);

View File

@ -35,6 +35,11 @@ public:
bool Open(const char *fileName);
bool Close();
//! throw and show appropriate message box
[[noreturn]] void ThrowException(
bool write //!< If true, a database update failed; if false, only a SELECT failed
) const;
bool SafeMode(const char *schema = "main");
bool FastMode(const char *schema = "main");

View File

@ -506,7 +506,7 @@ size_t SqliteSampleBlock::GetBlob(void *dest,
// Just showing the user a simple message, not the library error too
// which isn't internationalized
throw SimpleMessageBoxException{ XO("Failed to retrieve project data") };
Conn()->ThrowException( false );
}
// Retrieve returned data
@ -583,7 +583,7 @@ void SqliteSampleBlock::Load(SampleBlockID sbid)
// Just showing the user a simple message, not the library error too
// which isn't internationalized
throw SimpleMessageBoxException{ XO("Failed to retrieve sample block") };
Conn()->ThrowException( false );
}
// Retrieve returned data
@ -641,7 +641,7 @@ void SqliteSampleBlock::Commit()
// Just showing the user a simple message, not the library error too
// which isn't internationalized
throw SimpleMessageBoxException{ XO("Failed to add sample block") };
Conn()->ThrowException( true );
}
// Retrieve returned data
@ -690,7 +690,7 @@ void SqliteSampleBlock::Delete()
// Just showing the user a simple message, not the library error too
// which isn't internationalized
throw SimpleMessageBoxException{ XO("Failed to delete sample block") };
Conn()->ThrowException( true );
}
// Clear statement bindings and rewind statement