From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Tue, 19 Mar 2024 18:21:04 +0000 (-0400) Subject: Clean up SSQLite3::~SSQLite3 X-Git-Tag: rec-5.1.0-alpha1~105^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=11840d2be781a5e48561c33d7ff7593f3f7493e4;p=thirdparty%2Fpdns.git Clean up SSQLite3::~SSQLite3 * The loop will run once or twice * There used to be some cleanup that was done in the failure case but it has been gone for a while * Clarify logic * Report error message from sqlite3 --- diff --git a/pdns/ssqlite3.cc b/pdns/ssqlite3.cc index 2fecbba5bf..ec28058ea8 100644 --- a/pdns/ssqlite3.cc +++ b/pdns/ssqlite3.cc @@ -319,17 +319,17 @@ void SSQLite3::setLog(bool state) // Destructor. SSQLite3::~SSQLite3() { - for (int tries = 0;; ++tries) { + for (int tried = 0;; ++tried) { int ret = sqlite3_close(m_pDB); - if (ret != SQLITE_OK) { - if (tries != 0 || ret != SQLITE_BUSY) { // if we have SQLITE_BUSY, and a working m_Pstmt, try finalize - cerr << "Unable to close down sqlite connection: " << ret << endl; - abort(); - } - } - else { + if (ret == SQLITE_OK) { break; } + cerr << "SQLite3 error state while tearing down database: " << SSQLite3ErrorString(m_pDB) << endl; + if (tried == 0 && ret == SQLITE_BUSY) { + continue; + } + cerr << "Unable to close down sqlite connection: " << ret << endl; + abort(); } }