From 24face5249abfddd3de1e255ec4072677b39969d Mon Sep 17 00:00:00 2001 From: sapier Date: Wed, 25 Jun 2014 19:59:45 +0200 Subject: [PATCH] Fix statement not set NULL on deletion Make local only variables static --- src/rollback.cpp | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/rollback.cpp b/src/rollback.cpp index 36ebd729..0af7aa4f 100644 --- a/src/rollback.cpp +++ b/src/rollback.cpp @@ -36,17 +36,17 @@ with this program; if not, write to the Free Software Foundation, Inc., #define POINTS_PER_NODE (16.0) -std::string dbp; -sqlite3* dbh; -sqlite3_stmt* dbs_insert; -sqlite3_stmt* dbs_replace; -sqlite3_stmt* dbs_select; -sqlite3_stmt* dbs_select_range; -sqlite3_stmt* dbs_select_withActor; -sqlite3_stmt* dbs_knownActor_select; -sqlite3_stmt* dbs_knownActor_insert; -sqlite3_stmt* dbs_knownNode_select; -sqlite3_stmt* dbs_knownNode_insert; +static std::string dbp; +static sqlite3* dbh = NULL; +static sqlite3_stmt* dbs_insert = NULL; +static sqlite3_stmt* dbs_replace = NULL; +static sqlite3_stmt* dbs_select = NULL; +static sqlite3_stmt* dbs_select_range = NULL; +static sqlite3_stmt* dbs_select_withActor = NULL; +static sqlite3_stmt* dbs_knownActor_select = NULL; +static sqlite3_stmt* dbs_knownActor_insert = NULL; +static sqlite3_stmt* dbs_knownNode_select = NULL; +static sqlite3_stmt* dbs_knownNode_insert = NULL; struct Stack { int node; @@ -1094,6 +1094,7 @@ public: #define FINALIZE_STATEMENT(statement) \ if ( statement ) \ rc = sqlite3_finalize(statement); \ + statement = NULL; \ if ( rc != SQLITE_OK ) \ errorstream << "RollbackManager::~RollbackManager():" \ << "Failed to finalize: " << #statement << ": rc=" << rc << std::endl; @@ -1117,6 +1118,8 @@ public: if(dbh) rc = sqlite3_close(dbh); + dbh = NULL; + if (rc != SQLITE_OK) { errorstream << "RollbackManager::~RollbackManager(): " << "Failed to close database: rc=" << rc << std::endl; -- 2.30.2