From 91e55e2b7b1073f43fc362286e6a97028695ba0b Mon Sep 17 00:00:00 2001 From: Refael Ackermann Date: Sat, 15 Dec 2018 13:41:01 -0500 Subject: [PATCH 1/2] make compatible with V8 7.1 * Remove use of two argument Concat --- package.json | 2 +- src/database.cc | 15 +++++++++------ src/macros.h | 14 ++++---------- src/statement.cc | 4 ++-- 4 files changed, 16 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index ca07f62b9..b30e24360 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "url": "git://github.com/mapbox/node-sqlite3.git" }, "dependencies": { - "nan": "~2.10.0", + "nan": "~2.11.1", "node-pre-gyp": "^0.11.0", "request": "^2.87.0" }, diff --git a/src/database.cc b/src/database.cc index 4dbd5c6ab..ace5fa0b0 100644 --- a/src/database.cc +++ b/src/database.cc @@ -37,7 +37,7 @@ void Database::Process() { Nan::HandleScope scope; if (!open && locked && !queue.empty()) { - EXCEPTION(Nan::New("Database handle is closed").ToLocalChecked(), SQLITE_MISUSE, exception); + EXCEPTION("Database handle is closed", SQLITE_MISUSE, exception); Local argv[] = { exception }; bool called = false; @@ -85,7 +85,7 @@ void Database::Schedule(Work_Callback callback, Baton* baton, bool exclusive) { Nan::HandleScope scope; if (!open && locked) { - EXCEPTION(Nan::New("Database is closed").ToLocalChecked(), SQLITE_MISUSE, exception); + EXCEPTION("Database is closed", SQLITE_MISUSE, exception); Local cb = Nan::New(baton->callback); if (!cb.IsEmpty() && cb->IsFunction()) { Local argv[] = { exception }; @@ -176,7 +176,7 @@ void Database::Work_AfterOpen(uv_work_t* req) { Local argv[1]; if (baton->status != SQLITE_OK) { - EXCEPTION(Nan::New(baton->message.c_str()).ToLocalChecked(), baton->status, exception); + EXCEPTION(baton->message, baton->status, exception); argv[0] = exception; } else { @@ -256,7 +256,7 @@ void Database::Work_AfterClose(uv_work_t* req) { Local argv[1]; if (baton->status != SQLITE_OK) { - EXCEPTION(Nan::New(baton->message.c_str()).ToLocalChecked(), baton->status, exception); + EXCEPTION(baton->message, baton->status, exception); argv[0] = exception; } else { @@ -346,6 +346,9 @@ NAN_METHOD(Database::Configure) { } else { return Nan::ThrowError(Exception::Error(String::Concat( +#if V8_MAJOR_VERSION > 6 + info.GetIsolate(), +#endif Nan::To(info[0]).ToLocalChecked(), Nan::New(" is not a valid configuration option").ToLocalChecked() ))); @@ -554,7 +557,7 @@ void Database::Work_AfterExec(uv_work_t* req) { Local cb = Nan::New(baton->callback); if (baton->status != SQLITE_OK) { - EXCEPTION(Nan::New(baton->message.c_str()).ToLocalChecked(), baton->status, exception); + EXCEPTION(baton->message, baton->status, exception); if (!cb.IsEmpty() && cb->IsFunction()) { Local argv[] = { exception }; @@ -656,7 +659,7 @@ void Database::Work_AfterLoadExtension(uv_work_t* req) { Local cb = Nan::New(baton->callback); if (baton->status != SQLITE_OK) { - EXCEPTION(Nan::New(baton->message.c_str()).ToLocalChecked(), baton->status, exception); + EXCEPTION(baton->message, baton->status, exception); if (!cb.IsEmpty() && cb->IsFunction()) { Local argv[] = { exception }; diff --git a/src/macros.h b/src/macros.h index 38399ee86..99c15f3fd 100644 --- a/src/macros.h +++ b/src/macros.h @@ -83,21 +83,15 @@ const char* sqlite_authorizer_string(int type); Nan::New(property).ToLocalChecked()).ToLocalChecked()).FromJust(); #define EXCEPTION(msg, errno, name) \ - Local name = Exception::Error( \ - String::Concat( \ - String::Concat( \ - Nan::New(sqlite_code_string(errno)).ToLocalChecked(), \ - Nan::New(": ").ToLocalChecked() \ - ), \ - (msg) \ - ) \ - ); \ + Local name = Exception::Error(Nan::New( \ + std::string(sqlite_code_string(errno)) + \ + std::string(": ") + std::string(msg) \ + ).ToLocalChecked()); \ Local name ##_obj = name.As(); \ Nan::Set(name ##_obj, Nan::New("errno").ToLocalChecked(), Nan::New(errno));\ Nan::Set(name ##_obj, Nan::New("code").ToLocalChecked(), \ Nan::New(sqlite_code_string(errno)).ToLocalChecked()); - #define EMIT_EVENT(obj, argc, argv) \ TRY_CATCH_CALL((obj), \ Nan::Get(obj, \ diff --git a/src/statement.cc b/src/statement.cc index 6efbe5766..e09aeafff 100644 --- a/src/statement.cc +++ b/src/statement.cc @@ -65,7 +65,7 @@ template void Statement::Error(T* baton) { Statement* stmt = baton->stmt; // Fail hard on logic errors. assert(stmt->status != 0); - EXCEPTION(Nan::New(stmt->message.c_str()).ToLocalChecked(), stmt->status, exception); + EXCEPTION(stmt->message, stmt->status, exception); Local cb = Nan::New(baton->callback); @@ -857,7 +857,7 @@ void Statement::CleanQueue() { if (prepared && !queue.empty()) { // This statement has already been prepared and is now finalized. // Fire error for all remaining items in the queue. - EXCEPTION(Nan::New("Statement is already finalized").ToLocalChecked(), SQLITE_MISUSE, exception); + EXCEPTION("Statement is already finalized", SQLITE_MISUSE, exception); Local argv[] = { exception }; bool called = false; From 06927b61035155bf8506e5be78641eb5d1fb04d4 Mon Sep 17 00:00:00 2001 From: Refael Ackermann Date: Tue, 18 Dec 2018 17:20:58 -0500 Subject: [PATCH 2/2] fixup! bump nan --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b30e24360..3f2601955 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "url": "git://github.com/mapbox/node-sqlite3.git" }, "dependencies": { - "nan": "~2.11.1", + "nan": "^2.12.1", "node-pre-gyp": "^0.11.0", "request": "^2.87.0" },