From f6d0f8b3e938ac0943898cc34cd239b1227ac294 Mon Sep 17 00:00:00 2001 From: Maas-Maarten Zeeman Date: Fri, 24 Feb 2017 16:54:30 +0100 Subject: [PATCH] Store the reference to the connection when prepare fails. When the statement is destructed, the connection will be decreffed and also destructed. --- c_src/esqlite3_nif.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/c_src/esqlite3_nif.c b/c_src/esqlite3_nif.c index c0b7806..d79d3f9 100644 --- a/c_src/esqlite3_nif.c +++ b/c_src/esqlite3_nif.c @@ -344,13 +344,14 @@ do_prepare(ErlNifEnv *env, esqlite_connection *conn, const ERL_NIF_TERM arg) if(!stmt) return make_error_tuple(env, "no_memory"); + stmt->connection = conn; + rc = sqlite3_prepare_v2(conn->db, (char *) bin.data, bin.size, &(stmt->statement), &tail); if(rc != SQLITE_OK) { enif_release_resource(stmt); return make_sqlite3_error_tuple(env, rc, conn->db); } - stmt->connection = conn; esqlite_stmt = enif_make_resource(env, stmt); enif_release_resource(stmt);