diff --git a/db/bindings.c b/db/bindings.c index a9ca4c630..1b223e66d 100644 --- a/db/bindings.c +++ b/db/bindings.c @@ -18,7 +18,16 @@ static int check_bind_pos(struct db_stmt *stmt, int pos) { - assert(pos == ++stmt->bind_pos); + if (pos == BIND_NEXT) { + /* Don't mix BIND_NEXT with other args! */ + assert(stmt->bindings[stmt->bind_pos+1].type == DB_BINDING_UNINITIALIZED); + return ++stmt->bind_pos; + } + + /* Don't mix BIND_NEXT with other args! */ + assert(stmt->bind_pos == -1); + assert(pos >= 0); + assert(pos < tal_count(stmt->bindings)); return pos; } diff --git a/db/bindings.h b/db/bindings.h index 4a5556eb0..c946cbb7a 100644 --- a/db/bindings.h +++ b/db/bindings.h @@ -17,6 +17,9 @@ struct onionreply; struct wally_psbt; struct wally_tx; +/* Magic pos argument meaning "the next field" */ +#define BIND_NEXT -77 + int db_col_is_null(struct db_stmt *stmt, const char *colname); void db_bind_int(struct db_stmt *stmt, int pos, int val);