Added extra check for closed database in update_hook
This commit is contained in:
@@ -309,14 +309,19 @@ update_callback(void *arg, int sqlite_operation_type, char const *sqlite_databas
|
||||
}
|
||||
|
||||
static ERL_NIF_TERM
|
||||
do_set_update_hook(ErlNifEnv *env, esqlite_connection *db, const ERL_NIF_TERM arg)
|
||||
do_set_update_hook(ErlNifEnv *env, esqlite_connection *conn, const ERL_NIF_TERM arg)
|
||||
{
|
||||
if(!enif_get_local_pid(env, arg, &db->notification_pid))
|
||||
return make_error_tuple(env, "invalid_pid");
|
||||
int rc;
|
||||
|
||||
sqlite3_update_hook(db->db, NULL, NULL);
|
||||
if(sqlite3_update_hook(db->db, update_callback, db) != SQLITE_OK)
|
||||
return make_error_tuple(env, "sqlite3_update_hook_fail");
|
||||
if(!enif_get_local_pid(env, arg, &conn->notification_pid)) {
|
||||
return make_error_tuple(env, "invalid_pid");
|
||||
}
|
||||
|
||||
if(!conn->db) {
|
||||
return make_error_tuple(env, "closed");
|
||||
}
|
||||
|
||||
sqlite3_update_hook(conn->db, update_callback, conn);
|
||||
|
||||
return make_atom(env, "ok");
|
||||
}
|
||||
|
||||
@@ -447,7 +447,7 @@ step(#statement{raw_statement=RawStatement, raw_connection=RawConnection}, Timeo
|
||||
{rows, list(tuple())} |
|
||||
{'$busy', list(tuple())} |
|
||||
{'$done', list(tuple())} |
|
||||
{error, term()}.
|
||||
{error, _}.
|
||||
multi_step(#statement{raw_statement=RawStatement, raw_connection=RawConnection}, ChunkSize, Timeout) ->
|
||||
Ref = make_ref(),
|
||||
ok = esqlite3_nif:multi_step(RawConnection, RawStatement, ChunkSize, Ref, self()),
|
||||
|
||||
Reference in New Issue
Block a user