Commit a21226a1 by King Koopa

Update to NAN 1.1.2

parent f552560c
...@@ -4,6 +4,7 @@ env: ...@@ -4,6 +4,7 @@ env:
matrix: matrix:
- export NODE_VERSION="0.8" - export NODE_VERSION="0.8"
- export NODE_VERSION="0.10" NODE_WEBKIT="0.8.6" - export NODE_VERSION="0.10" NODE_WEBKIT="0.8.6"
- export NODE_VERSION="0.11"
global: global:
- secure: QhuP5E/kYL1j1KDkHGJtk6DSJr1RH4DR/JrC62Viuf5Du8jE+i0kPWfF2MxtuEmKo35orhpu8t8mzKygWfuO63WPuuIE9qd/+V/y99Lqcj0tEN6wJ5RnywktbTJWg23zphjhmYq3Xj8DLVEikCZBwHtlbygkO9Q60cn1PK+bnPg= - secure: QhuP5E/kYL1j1KDkHGJtk6DSJr1RH4DR/JrC62Viuf5Du8jE+i0kPWfF2MxtuEmKo35orhpu8t8mzKygWfuO63WPuuIE9qd/+V/y99Lqcj0tEN6wJ5RnywktbTJWg23zphjhmYq3Xj8DLVEikCZBwHtlbygkO9Q60cn1PK+bnPg=
- secure: HxCS2dQAWI0KmCFnFNNZoucG4FeAW+itG7+Hp0dNtwmxZzGOZYFO2bZcGvTAMNfVN++oqLxTebYQI1oB5yUl5mPJjrjthaGS6Zq3S6rfJcXiv+icYgEXlR6ejQ97dsHw1Jeg8nedCQlI4kHfvG6pgBLhq9hnugxH1Cjhdt14E9U= - secure: HxCS2dQAWI0KmCFnFNNZoucG4FeAW+itG7+Hp0dNtwmxZzGOZYFO2bZcGvTAMNfVN++oqLxTebYQI1oB5yUl5mPJjrjthaGS6Zq3S6rfJcXiv+icYgEXlR6ejQ97dsHw1Jeg8nedCQlI4kHfvG6pgBLhq9hnugxH1Cjhdt14E9U=
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
}, },
"dependencies": { "dependencies": {
"node-pre-gyp": "0.5.13", "node-pre-gyp": "0.5.13",
"nan": "1.0.0" "nan": "1.1.2"
}, },
"bundledDependencies": [ "bundledDependencies": [
"node-pre-gyp" "node-pre-gyp"
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
"mocha": "*" "mocha": "*"
}, },
"engines": { "engines": {
"node": ">= 0.8.0 < 0.11.0" "node": ">= 0.8.0"
}, },
"scripts": { "scripts": {
"install": "node-pre-gyp install --fallback-to-build", "install": "node-pre-gyp install --fallback-to-build",
......
...@@ -15,7 +15,7 @@ void Database::Init(Handle<Object> target) { ...@@ -15,7 +15,7 @@ void Database::Init(Handle<Object> target) {
Local<FunctionTemplate> t = NanNew<FunctionTemplate>(New); Local<FunctionTemplate> t = NanNew<FunctionTemplate>(New);
t->InstanceTemplate()->SetInternalFieldCount(1); t->InstanceTemplate()->SetInternalFieldCount(1);
t->SetClassName(NanSymbol("Database")); t->SetClassName(NanNew("Database"));
NODE_SET_PROTOTYPE_METHOD(t, "close", Close); NODE_SET_PROTOTYPE_METHOD(t, "close", Close);
NODE_SET_PROTOTYPE_METHOD(t, "exec", Exec); NODE_SET_PROTOTYPE_METHOD(t, "exec", Exec);
...@@ -29,11 +29,13 @@ void Database::Init(Handle<Object> target) { ...@@ -29,11 +29,13 @@ void Database::Init(Handle<Object> target) {
NanAssignPersistent(constructor_template, t); NanAssignPersistent(constructor_template, t);
target->Set(NanSymbol("Database"), target->Set(NanNew("Database"),
t->GetFunction()); t->GetFunction());
} }
void Database::Process() { void Database::Process() {
NanScope();
if (!open && locked && !queue.empty()) { if (!open && locked && !queue.empty()) {
EXCEPTION(NanNew<String>("Database handle is closed"), SQLITE_MISUSE, exception); EXCEPTION(NanNew<String>("Database handle is closed"), SQLITE_MISUSE, exception);
Local<Value> argv[] = { exception }; Local<Value> argv[] = { exception };
...@@ -57,7 +59,7 @@ void Database::Process() { ...@@ -57,7 +59,7 @@ void Database::Process() {
// When we couldn't call a callback function, emit an error on the // When we couldn't call a callback function, emit an error on the
// Database object. // Database object.
if (!called) { if (!called) {
Local<Value> args[] = { NanSymbol("error"), exception }; Local<Value> args[] = { NanNew("error"), exception };
EMIT_EVENT(NanObjectWrapHandle(this), 2, args); EMIT_EVENT(NanObjectWrapHandle(this), 2, args);
} }
return; return;
...@@ -80,6 +82,7 @@ void Database::Process() { ...@@ -80,6 +82,7 @@ void Database::Process() {
} }
void Database::Schedule(Work_Callback callback, Baton* baton, bool exclusive) { void Database::Schedule(Work_Callback callback, Baton* baton, bool exclusive) {
NanScope();
if (!open && locked) { if (!open && locked) {
EXCEPTION(NanNew<String>("Database is closed"), SQLITE_MISUSE, exception); EXCEPTION(NanNew<String>("Database is closed"), SQLITE_MISUSE, exception);
Local<Function> cb = NanNew(baton->callback); Local<Function> cb = NanNew(baton->callback);
...@@ -88,7 +91,7 @@ void Database::Schedule(Work_Callback callback, Baton* baton, bool exclusive) { ...@@ -88,7 +91,7 @@ void Database::Schedule(Work_Callback callback, Baton* baton, bool exclusive) {
TRY_CATCH_CALL(NanObjectWrapHandle(this), cb, 1, argv); TRY_CATCH_CALL(NanObjectWrapHandle(this), cb, 1, argv);
} }
else { else {
Local<Value> argv[] = { NanSymbol("error"), exception }; Local<Value> argv[] = { NanNew("error"), exception };
EMIT_EVENT(NanObjectWrapHandle(this), 2, argv); EMIT_EVENT(NanObjectWrapHandle(this), 2, argv);
} }
return; return;
...@@ -128,8 +131,8 @@ NAN_METHOD(Database::New) { ...@@ -128,8 +131,8 @@ NAN_METHOD(Database::New) {
Database* db = new Database(); Database* db = new Database();
db->Wrap(args.This()); db->Wrap(args.This());
args.This()->Set(NanSymbol("filename"), args[0]->ToString(), ReadOnly); args.This()->Set(NanNew("filename"), args[0]->ToString(), ReadOnly);
args.This()->Set(NanSymbol("mode"), NanNew<Integer>(mode), ReadOnly); args.This()->Set(NanNew("mode"), NanNew<Integer>(mode), ReadOnly);
// Start opening the database. // Start opening the database.
OpenBaton* baton = new OpenBaton(db, callback, *filename, mode); OpenBaton* baton = new OpenBaton(db, callback, *filename, mode);
...@@ -187,12 +190,12 @@ void Database::Work_AfterOpen(uv_work_t* req) { ...@@ -187,12 +190,12 @@ void Database::Work_AfterOpen(uv_work_t* req) {
TRY_CATCH_CALL(NanObjectWrapHandle(db), cb, 1, argv); TRY_CATCH_CALL(NanObjectWrapHandle(db), cb, 1, argv);
} }
else if (!db->open) { else if (!db->open) {
Local<Value> args[] = { NanSymbol("error"), argv[0] }; Local<Value> args[] = { NanNew("error"), argv[0] };
EMIT_EVENT(NanObjectWrapHandle(db), 2, args); EMIT_EVENT(NanObjectWrapHandle(db), 2, args);
} }
if (db->open) { if (db->open) {
Local<Value> args[] = { NanSymbol("open") }; Local<Value> args[] = { NanNew("open") };
EMIT_EVENT(NanObjectWrapHandle(db), 1, args); EMIT_EVENT(NanObjectWrapHandle(db), 1, args);
db->Process(); db->Process();
} }
...@@ -267,12 +270,12 @@ void Database::Work_AfterClose(uv_work_t* req) { ...@@ -267,12 +270,12 @@ void Database::Work_AfterClose(uv_work_t* req) {
TRY_CATCH_CALL(NanObjectWrapHandle(db), cb, 1, argv); TRY_CATCH_CALL(NanObjectWrapHandle(db), cb, 1, argv);
} }
else if (db->open) { else if (db->open) {
Local<Value> args[] = { NanSymbol("error"), argv[0] }; Local<Value> args[] = { NanNew("error"), argv[0] };
EMIT_EVENT(NanObjectWrapHandle(db), 2, args); EMIT_EVENT(NanObjectWrapHandle(db), 2, args);
} }
if (!db->open) { if (!db->open) {
Local<Value> args[] = { NanSymbol("close"), argv[0] }; Local<Value> args[] = { NanNew("close"), argv[0] };
EMIT_EVENT(NanObjectWrapHandle(db), 1, args); EMIT_EVENT(NanObjectWrapHandle(db), 1, args);
db->Process(); db->Process();
} }
...@@ -322,17 +325,17 @@ NAN_METHOD(Database::Configure) { ...@@ -322,17 +325,17 @@ NAN_METHOD(Database::Configure) {
REQUIRE_ARGUMENTS(2); REQUIRE_ARGUMENTS(2);
if (args[0]->Equals(NanSymbol("trace"))) { if (args[0]->Equals(NanNew("trace"))) {
Local<Function> handle; Local<Function> handle;
Baton* baton = new Baton(db, handle); Baton* baton = new Baton(db, handle);
db->Schedule(RegisterTraceCallback, baton); db->Schedule(RegisterTraceCallback, baton);
} }
else if (args[0]->Equals(NanSymbol("profile"))) { else if (args[0]->Equals(NanNew("profile"))) {
Local<Function> handle; Local<Function> handle;
Baton* baton = new Baton(db, handle); Baton* baton = new Baton(db, handle);
db->Schedule(RegisterProfileCallback, baton); db->Schedule(RegisterProfileCallback, baton);
} }
else if (args[0]->Equals(NanSymbol("busyTimeout"))) { else if (args[0]->Equals(NanNew("busyTimeout"))) {
if (!args[1]->IsInt32()) { if (!args[1]->IsInt32()) {
return NanThrowTypeError("Value must be an integer"); return NanThrowTypeError("Value must be an integer");
} }
...@@ -393,7 +396,7 @@ void Database::TraceCallback(Database* db, std::string* sql) { ...@@ -393,7 +396,7 @@ void Database::TraceCallback(Database* db, std::string* sql) {
// Note: This function is called in the main V8 thread. // Note: This function is called in the main V8 thread.
NanScope(); NanScope();
Local<Value> argv[] = { Local<Value> argv[] = {
NanSymbol("trace"), NanNew("trace"),
NanNew<String>(sql->c_str()) NanNew<String>(sql->c_str())
}; };
EMIT_EVENT(NanObjectWrapHandle(db), 2, argv); EMIT_EVENT(NanObjectWrapHandle(db), 2, argv);
...@@ -432,7 +435,7 @@ void Database::ProfileCallback(void* db, const char* sql, sqlite3_uint64 nsecs) ...@@ -432,7 +435,7 @@ void Database::ProfileCallback(void* db, const char* sql, sqlite3_uint64 nsecs)
void Database::ProfileCallback(Database *db, ProfileInfo* info) { void Database::ProfileCallback(Database *db, ProfileInfo* info) {
NanScope(); NanScope();
Local<Value> argv[] = { Local<Value> argv[] = {
NanSymbol("profile"), NanNew("profile"),
NanNew<String>(info->sql.c_str()), NanNew<String>(info->sql.c_str()),
NanNew<Integer>((double)info->nsecs / 1000000.0) NanNew<Integer>((double)info->nsecs / 1000000.0)
}; };
...@@ -476,7 +479,7 @@ void Database::UpdateCallback(Database *db, UpdateInfo* info) { ...@@ -476,7 +479,7 @@ void Database::UpdateCallback(Database *db, UpdateInfo* info) {
NanScope(); NanScope();
Local<Value> argv[] = { Local<Value> argv[] = {
NanSymbol(sqlite_authorizer_string(info->type)), NanNew(sqlite_authorizer_string(info->type)),
NanNew<String>(info->database.c_str()), NanNew<String>(info->database.c_str()),
NanNew<String>(info->table.c_str()), NanNew<String>(info->table.c_str()),
NanNew<Integer>(info->rowid), NanNew<Integer>(info->rowid),
...@@ -541,7 +544,7 @@ void Database::Work_AfterExec(uv_work_t* req) { ...@@ -541,7 +544,7 @@ void Database::Work_AfterExec(uv_work_t* req) {
TRY_CATCH_CALL(NanObjectWrapHandle(db), cb, 1, argv); TRY_CATCH_CALL(NanObjectWrapHandle(db), cb, 1, argv);
} }
else { else {
Local<Value> args[] = { NanSymbol("error"), exception }; Local<Value> args[] = { NanNew("error"), exception };
EMIT_EVENT(NanObjectWrapHandle(db), 2, args); EMIT_EVENT(NanObjectWrapHandle(db), 2, args);
} }
} }
...@@ -644,7 +647,7 @@ void Database::Work_AfterLoadExtension(uv_work_t* req) { ...@@ -644,7 +647,7 @@ void Database::Work_AfterLoadExtension(uv_work_t* req) {
TRY_CATCH_CALL(NanObjectWrapHandle(db), cb, 1, argv); TRY_CATCH_CALL(NanObjectWrapHandle(db), cb, 1, argv);
} }
else { else {
Local<Value> args[] = { NanSymbol("error"), exception }; Local<Value> args[] = { NanNew("error"), exception };
EMIT_EVENT(NanObjectWrapHandle(db), 2, args); EMIT_EVENT(NanObjectWrapHandle(db), 2, args);
} }
} }
......
#ifndef NODE_SQLITE3_SRC_DATABASE_H #ifndef NODE_SQLITE3_SRC_DATABASE_H
#define NODE_SQLITE3_SRC_DATABASE_H #define NODE_SQLITE3_SRC_DATABASE_H
...@@ -24,6 +25,7 @@ public: ...@@ -24,6 +25,7 @@ public:
static void Init(Handle<Object> target); static void Init(Handle<Object> target);
static inline bool HasInstance(Handle<Value> val) { static inline bool HasInstance(Handle<Value> val) {
NanScope();
if (!val->IsObject()) return false; if (!val->IsObject()) return false;
Local<Object> obj = val->ToObject(); Local<Object> obj = val->ToObject();
return NanNew(constructor_template)->HasInstance(obj); return NanNew(constructor_template)->HasInstance(obj);
...@@ -108,7 +110,6 @@ protected: ...@@ -108,7 +110,6 @@ protected:
debug_trace(NULL), debug_trace(NULL),
debug_profile(NULL), debug_profile(NULL),
update_event(NULL) { update_event(NULL) {
} }
~Database() { ~Database() {
......
...@@ -57,57 +57,53 @@ const char* sqlite_authorizer_string(int type); ...@@ -57,57 +57,53 @@ const char* sqlite_authorizer_string(int type);
#define DEFINE_CONSTANT_INTEGER(target, constant, name) \ #define DEFINE_CONSTANT_INTEGER(target, constant, name) \
(target)->Set( \ (target)->Set( \
NanSymbol(#name), \ NanNew(#name), \
NanNew<Integer>(constant), \ NanNew<Integer>(constant), \
static_cast<PropertyAttribute>(ReadOnly | DontDelete) \ static_cast<PropertyAttribute>(ReadOnly | DontDelete) \
); );
#define DEFINE_CONSTANT_STRING(target, constant, name) \ #define DEFINE_CONSTANT_STRING(target, constant, name) \
(target)->Set( \ (target)->Set( \
NanSymbol(#name), \ NanNew(#name), \
NanSymbol(constant), \ NanNew(constant), \
static_cast<PropertyAttribute>(ReadOnly | DontDelete) \ static_cast<PropertyAttribute>(ReadOnly | DontDelete) \
); );
#define NODE_SET_GETTER(target, name, function) \ #define NODE_SET_GETTER(target, name, function) \
(target)->InstanceTemplate() \ (target)->InstanceTemplate() \
->SetAccessor(NanSymbol(name), (function)); ->SetAccessor(NanNew(name), (function));
#define GET_STRING(source, name, property) \ #define GET_STRING(source, name, property) \
String::Utf8Value name((source)->Get(NanSymbol(property))); String::Utf8Value name((source)->Get(NanNew(property)));
#define GET_INTEGER(source, name, property) \ #define GET_INTEGER(source, name, property) \
int name = (source)->Get(NanSymbol(property))->Int32Value(); int name = (source)->Get(NanNew(property))->Int32Value();
#define EXCEPTION(msg, errno, name) \ #define EXCEPTION(msg, errno, name) \
Local<Value> name = Exception::Error( \ Local<Value> name = Exception::Error( \
String::Concat( \ String::Concat( \
String::Concat( \ String::Concat( \
NanSymbol(sqlite_code_string(errno)), \ NanNew(sqlite_code_string(errno)), \
NanSymbol(": ") \ NanNew(": ") \
), \ ), \
(msg) \ (msg) \
) \ ) \
); \ ); \
Local<Object> name ##_obj = name->ToObject(); \ Local<Object> name ##_obj = name->ToObject(); \
name ##_obj->Set(NanSymbol("errno"), NanNew<Integer>(errno)); \ name ##_obj->Set(NanNew("errno"), NanNew<Integer>(errno)); \
name ##_obj->Set(NanSymbol("code"), \ name ##_obj->Set(NanNew("code"), \
NanSymbol(sqlite_code_string(errno))); NanNew(sqlite_code_string(errno)));
#define EMIT_EVENT(obj, argc, argv) \ #define EMIT_EVENT(obj, argc, argv) \
TRY_CATCH_CALL((obj), \ TRY_CATCH_CALL((obj), \
Local<Function>::Cast((obj)->Get(NanSymbol("emit"))), \ Local<Function>::Cast((obj)->Get(NanNew("emit"))), \
argc, argv \ argc, argv \
); );
#define TRY_CATCH_CALL(context, callback, argc, argv) \ #define TRY_CATCH_CALL(context, callback, argc, argv) \
{ TryCatch try_catch; \ NanMakeCallback((context), (callback), (argc), (argv))
NanMakeCallback((context), (callback), (argc), (argv)); \
if (try_catch.HasCaught()) { \
FatalException(try_catch); \
} }
#define WORK_DEFINITION(name) \ #define WORK_DEFINITION(name) \
static NAN_METHOD(name); \ static NAN_METHOD(name); \
......
...@@ -16,6 +16,7 @@ using namespace node_sqlite3; ...@@ -16,6 +16,7 @@ using namespace node_sqlite3;
namespace { namespace {
void RegisterModule(v8::Handle<Object> target) { void RegisterModule(v8::Handle<Object> target) {
NanScope();
Database::Init(target); Database::Init(target);
Statement::Init(target); Statement::Init(target);
......
...@@ -17,7 +17,7 @@ void Statement::Init(Handle<Object> target) { ...@@ -17,7 +17,7 @@ void Statement::Init(Handle<Object> target) {
Local<FunctionTemplate> t = NanNew<FunctionTemplate>(New); Local<FunctionTemplate> t = NanNew<FunctionTemplate>(New);
t->InstanceTemplate()->SetInternalFieldCount(1); t->InstanceTemplate()->SetInternalFieldCount(1);
t->SetClassName(NanSymbol("Statement")); t->SetClassName(NanNew("Statement"));
NODE_SET_PROTOTYPE_METHOD(t, "bind", Bind); NODE_SET_PROTOTYPE_METHOD(t, "bind", Bind);
NODE_SET_PROTOTYPE_METHOD(t, "get", Get); NODE_SET_PROTOTYPE_METHOD(t, "get", Get);
...@@ -28,7 +28,7 @@ void Statement::Init(Handle<Object> target) { ...@@ -28,7 +28,7 @@ void Statement::Init(Handle<Object> target) {
NODE_SET_PROTOTYPE_METHOD(t, "finalize", Finalize); NODE_SET_PROTOTYPE_METHOD(t, "finalize", Finalize);
NanAssignPersistent(constructor_template, t); NanAssignPersistent(constructor_template, t);
target->Set(NanSymbol("Statement"), target->Set(NanNew("Statement"),
t->GetFunction()); t->GetFunction());
} }
...@@ -60,6 +60,8 @@ void Statement::Schedule(Work_Callback callback, Baton* baton) { ...@@ -60,6 +60,8 @@ void Statement::Schedule(Work_Callback callback, Baton* baton) {
} }
template <class T> void Statement::Error(T* baton) { template <class T> void Statement::Error(T* baton) {
NanScope();
Statement* stmt = baton->stmt; Statement* stmt = baton->stmt;
// Fail hard on logic errors. // Fail hard on logic errors.
assert(stmt->status != 0); assert(stmt->status != 0);
...@@ -72,7 +74,7 @@ template <class T> void Statement::Error(T* baton) { ...@@ -72,7 +74,7 @@ template <class T> void Statement::Error(T* baton) {
TRY_CATCH_CALL(NanObjectWrapHandle(stmt), cb, 1, argv); TRY_CATCH_CALL(NanObjectWrapHandle(stmt), cb, 1, argv);
} }
else { else {
Local<Value> argv[] = { NanSymbol("error"), exception }; Local<Value> argv[] = { NanNew("error"), exception };
EMIT_EVENT(NanObjectWrapHandle(stmt), 2, argv); EMIT_EVENT(NanObjectWrapHandle(stmt), 2, argv);
} }
} }
...@@ -100,7 +102,7 @@ NAN_METHOD(Statement::New) { ...@@ -100,7 +102,7 @@ NAN_METHOD(Statement::New) {
Database* db = ObjectWrap::Unwrap<Database>(args[0]->ToObject()); Database* db = ObjectWrap::Unwrap<Database>(args[0]->ToObject());
Local<String> sql = Local<String>::Cast(args[1]); Local<String> sql = Local<String>::Cast(args[1]);
args.This()->Set(NanSymbol("sql"), sql, ReadOnly); args.This()->Set(NanNew("sql"), sql, ReadOnly);
Statement* stmt = new Statement(db); Statement* stmt = new Statement(db);
stmt->Wrap(args.This()); stmt->Wrap(args.This());
...@@ -195,6 +197,8 @@ template <class T> Values::Field* ...@@ -195,6 +197,8 @@ template <class T> Values::Field*
} }
template <class T> T* Statement::Bind(_NAN_METHOD_ARGS, int start, int last) { template <class T> T* Statement::Bind(_NAN_METHOD_ARGS, int start, int last) {
NanScope();
if (last < 0) last = args.Length(); if (last < 0) last = args.Length();
Local<Function> callback; Local<Function> callback;
if (last > start && args[last - 1]->IsFunction()) { if (last > start && args[last - 1]->IsFunction()) {
...@@ -473,8 +477,8 @@ void Statement::Work_AfterRun(uv_work_t* req) { ...@@ -473,8 +477,8 @@ void Statement::Work_AfterRun(uv_work_t* req) {
// Fire callbacks. // Fire callbacks.
Local<Function> cb = NanNew(baton->callback); Local<Function> cb = NanNew(baton->callback);
if (!cb.IsEmpty() && cb->IsFunction()) { if (!cb.IsEmpty() && cb->IsFunction()) {
NanObjectWrapHandle(stmt)->Set(NanSymbol("lastID"), NanNew<Integer>(baton->inserted_id)); NanObjectWrapHandle(stmt)->Set(NanNew("lastID"), NanNew<Integer>(baton->inserted_id));
NanObjectWrapHandle(stmt)->Set(NanSymbol("changes"), NanNew<Integer>(baton->changes)); NanObjectWrapHandle(stmt)->Set(NanNew("changes"), NanNew<Integer>(baton->changes));
Local<Value> argv[] = { NanNew(NanNull()) }; Local<Value> argv[] = { NanNew(NanNull()) };
TRY_CATCH_CALL(NanObjectWrapHandle(stmt), cb, 1, argv); TRY_CATCH_CALL(NanObjectWrapHandle(stmt), cb, 1, argv);
...@@ -743,6 +747,8 @@ void Statement::Work_AfterReset(uv_work_t* req) { ...@@ -743,6 +747,8 @@ void Statement::Work_AfterReset(uv_work_t* req) {
} }
Local<Object> Statement::RowToJS(Row* row) { Local<Object> Statement::RowToJS(Row* row) {
NanEscapableScope();
Local<Object> result(NanNew<Object>()); Local<Object> result(NanNew<Object>());
Row::const_iterator it = row->begin(); Row::const_iterator it = row->begin();
...@@ -770,12 +776,12 @@ Local<Object> Statement::RowToJS(Row* row) { ...@@ -770,12 +776,12 @@ Local<Object> Statement::RowToJS(Row* row) {
} break; } break;
} }
result->Set(NanSymbol(field->name.c_str()), value); result->Set(NanNew(field->name.c_str()), value);
DELETE_FIELD(field); DELETE_FIELD(field);
} }
return result; return NanEscapeScope(result);
} }
void Statement::GetRow(Row* row, sqlite3_stmt* stmt) { void Statement::GetRow(Row* row, sqlite3_stmt* stmt) {
...@@ -822,6 +828,7 @@ NAN_METHOD(Statement::Finalize) { ...@@ -822,6 +828,7 @@ NAN_METHOD(Statement::Finalize) {
} }
void Statement::Finalize(Baton* baton) { void Statement::Finalize(Baton* baton) {
NanScope();
baton->stmt->Finalize(); baton->stmt->Finalize();
// Fire callback in case there was one. // Fire callback in case there was one.
...@@ -845,6 +852,7 @@ void Statement::Finalize() { ...@@ -845,6 +852,7 @@ void Statement::Finalize() {
} }
void Statement::CleanQueue() { void Statement::CleanQueue() {
NanScope();
if (prepared && !queue.empty()) { if (prepared && !queue.empty()) {
// This statement has already been prepared and is now finalized. // This statement has already been prepared and is now finalized.
// Fire error for all remaining items in the queue. // Fire error for all remaining items in the queue.
...@@ -874,7 +882,7 @@ void Statement::CleanQueue() { ...@@ -874,7 +882,7 @@ void Statement::CleanQueue() {
// When we couldn't call a callback function, emit an error on the // When we couldn't call a callback function, emit an error on the
// Statement object. // Statement object.
if (!called) { if (!called) {
Local<Value> args[] = { NanSymbol("error"), exception }; Local<Value> args[] = { NanNew("error"), exception };
EMIT_EVENT(NanObjectWrapHandle(this), 2, args); EMIT_EVENT(NanObjectWrapHandle(this), 2, args);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment