From 4114f6f79b50d6d1031de9892251111fe7890cdd Mon Sep 17 00:00:00 2001 From: Christian Decker Date: Tue, 26 Sep 2017 15:02:50 +0200 Subject: [PATCH] db: Clear errors before executing new query This was causing me some trouble by making it look like the last query failed, when it really was an old one. No need to drag failures around for longer than needed. Signed-off-by: Christian Decker --- wallet/db.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/wallet/db.c b/wallet/db.c index 7fa245dad..201e2780c 100644 --- a/wallet/db.c +++ b/wallet/db.c @@ -113,6 +113,14 @@ char *dbmigrations[] = { NULL, }; +/** + * db_clear_error - Clear any errors from previous queries + */ +static void db_clear_error(struct db *db) +{ + db->err = tal_free(db->err); +} + bool PRINTF_FMT(3, 4) db_exec(const char *caller, struct db *db, const char *fmt, ...) { @@ -123,6 +131,8 @@ bool PRINTF_FMT(3, 4) if (db->in_transaction && db->err) return false; + db_clear_error(db); + va_start(ap, fmt); cmd = tal_vfmt(db, fmt, ap); va_end(ap); @@ -151,6 +161,8 @@ sqlite3_stmt *PRINTF_FMT(3, 4) if (db->in_transaction && db->err) return NULL; + db_clear_error(db); + va_start(ap, fmt); query = tal_vfmt(db, fmt, ap); va_end(ap); @@ -164,15 +176,6 @@ sqlite3_stmt *PRINTF_FMT(3, 4) return stmt; } -/** - * db_clear_error - Clear any errors from previous queries - */ -static void db_clear_error(struct db *db) -{ - db->err = tal_free(db->err); -} - - static void close_db(struct db *db) { sqlite3_close(db->sql); } bool db_begin_transaction(struct db *db)