sqlite: throw on disposal of an in-use session · nodejs/node@2ce0e2e · GitHub
Skip to content

Commit 2ce0e2e

Browse files
araujoguiaduh95
authored andcommitted
sqlite: throw on disposal of an in-use session
Signed-off-by: Guilherme Araújo <arauujogui@gmail.com> PR-URL: #65449 Fixes: #65447 Refs: #65349 Reviewed-By: René <contact.9a5d6388@renegade334.me.uk> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com>
1 parent 53a29d0 commit 2ce0e2e

3 files changed

Lines changed: 49 additions & 23 deletions

File tree

‎doc/api/sqlite.md‎

Lines changed: 4 additions & 1 deletion

‎src/node_sqlite.cc‎

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4350,12 +4350,17 @@ void Session::Close(const FunctionCallbackInfo<Value>& args) {
43504350
session->Delete();
43514351
}
43524352

4353-
void Session::Dispose(const v8::FunctionCallbackInfo<v8::Value>& args) {
4354-
v8::TryCatch try_catch(args.GetIsolate());
4355-
Close(args);
4356-
if (try_catch.HasCaught()) {
4357-
CHECK(try_catch.CanContinue());
4353+
void Session::Dispose(const FunctionCallbackInfo<Value>& args) {
4354+
Session* session;
4355+
ASSIGN_OR_RETURN_UNWRAP(&session, args.This());
4356+
Environment* env = Environment::GetCurrent(args);
4357+
if (session->session_ == nullptr) {
4358+
return;
43584359
}
4360+
THROW_AND_RETURN_ON_BAD_STATE(
4361+
env, session->is_generating_changeset_, "session is currently in use");
4362+
4363+
session->Delete();
43594364
}
43604365

43614366
void Session::Delete() {

‎test/parallel/test-sqlite-session.js‎

Lines changed: 35 additions & 17 deletions

0 commit comments

Comments
 (0)