From 9056c163a738a2f66725ca9a3e48b59b2b0e2603 Mon Sep 17 00:00:00 2001 From: sapier Date: Sun, 22 Jun 2014 02:31:24 +0200 Subject: Fix sqlite3 map shutdown fails due to missing to finalize list statement Add error output on fail to shutdown sqlite3 map db Implement shutdown of sqlite3 rollback db --- src/rollback.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'src/rollback.cpp') diff --git a/src/rollback.cpp b/src/rollback.cpp index bae81ddb0..36ebd729c 100644 --- a/src/rollback.cpp +++ b/src/rollback.cpp @@ -1091,10 +1091,36 @@ public: SQL_databaseCheck(); } +#define FINALIZE_STATEMENT(statement) \ + if ( statement ) \ + rc = sqlite3_finalize(statement); \ + if ( rc != SQLITE_OK ) \ + errorstream << "RollbackManager::~RollbackManager():" \ + << "Failed to finalize: " << #statement << ": rc=" << rc << std::endl; ~RollbackManager() { infostream << "RollbackManager::~RollbackManager()" << std::endl; flush(); + + int rc = SQLITE_OK; + + FINALIZE_STATEMENT(dbs_insert) + FINALIZE_STATEMENT(dbs_replace) + FINALIZE_STATEMENT(dbs_select) + FINALIZE_STATEMENT(dbs_select_range) + FINALIZE_STATEMENT(dbs_select_withActor) + FINALIZE_STATEMENT(dbs_knownActor_select) + FINALIZE_STATEMENT(dbs_knownActor_insert) + FINALIZE_STATEMENT(dbs_knownNode_select) + FINALIZE_STATEMENT(dbs_knownNode_insert) + + if(dbh) + rc = sqlite3_close(dbh); + + if (rc != SQLITE_OK) { + errorstream << "RollbackManager::~RollbackManager(): " + << "Failed to close database: rc=" << rc << std::endl; + } } void addAction(const RollbackAction &action) { -- cgit v1.2.3