From 90cf01bbc52e7ebb994cd34577bcefbf4d9550c1 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Sun, 31 Dec 2017 00:54:21 +0100 Subject: [PATCH] Have to finalize all statements before sqlite3_close() can succeed. Also print some error message in the future if closeing the database failed. Signed-off-by: DL6ER --- database.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/database.c b/database.c index 25fdead8..f61c4a60 100644 --- a/database.c +++ b/database.c @@ -36,7 +36,12 @@ void check_database(int rc) void dbclose(void) { - sqlite3_close(db); + int rc = sqlite3_close(db); + // Report any error + if( rc ) + logg("dbclose() - SQL error (%i): %s", rc, sqlite3_errmsg(db)); + + // Unlock mutex on the database pthread_mutex_unlock(&dblock); } @@ -392,9 +397,9 @@ void save_to_DB(void) } // Finish prepared statement - ret = dbquery("END TRANSACTION"); - if(!ret){ dbclose(); return; } - sqlite3_finalize(stmt); + dbquery("END TRANSACTION"); + ret = sqlite3_finalize(stmt); + if(ret != SQLITE_OK){ dbclose(); return; } // Store index for next loop interation round and update last time stamp // in the database only if all queries have been saved successfully