From 5bc2cb991f894434705d419dc33a3d75c2a55bcf Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Thu, 23 Jul 2020 11:06:50 -0400 Subject: [PATCH] Do debug check for closing of DB before Project destruction safely... ... It wasn't safe, on some platforms, because the sequence of destruction of ProjectFileIO and ConnectionPtr is unspecified. It is safer that ConnectionPtr just checks itself, not that ProjectFileIO fetches it again. --- src/DBConnection.cpp | 5 ++++- src/ProjectFileIO.cpp | 1 - 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/DBConnection.cpp b/src/DBConnection.cpp index 3f5a9f7a0..fe24a4617 100644 --- a/src/DBConnection.cpp +++ b/src/DBConnection.cpp @@ -298,7 +298,10 @@ int DBConnection::CheckpointHook(void *data, sqlite3 *db, const char *schema, in return SQLITE_OK; } -ConnectionPtr::~ConnectionPtr() = default; +ConnectionPtr::~ConnectionPtr() +{ + wxASSERT_MSG(mpConnection, wxT("Project file was not closed at shutdown")); +} static const AudacityProject::AttachedObjects::RegisteredFactory sConnectionPtrKey{ diff --git a/src/ProjectFileIO.cpp b/src/ProjectFileIO.cpp index 1b886e3ce..251bfafb3 100644 --- a/src/ProjectFileIO.cpp +++ b/src/ProjectFileIO.cpp @@ -254,7 +254,6 @@ ProjectFileIO::ProjectFileIO(AudacityProject &project) ProjectFileIO::~ProjectFileIO() { - wxASSERT_MSG(!CurrConn(), wxT("Project file was not closed at shutdown")); } sqlite3 *ProjectFileIO::DB()