Skip to content

Commit c700929

Browse files
authored
Merge pull request #189 from figueredo/fix-method-callback
fix: avoid crashing when inspecting callback error
2 parents 9047135 + 862ae4b commit c700929

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
"contributors": [
77
"Fred Chien <[email protected]>",
88
"Bryan Burgers <[email protected]>",
9-
"Artem Derevnjuk <[email protected]>"
9+
"Artem Derevnjuk <[email protected]>",
10+
"Thiago Cardoso <[email protected]>"
1011
],
1112
"license": "MIT",
1213
"repository": {

src/dbus.cc

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ namespace NodeDBus {
2121
DBusError error;
2222
DBusMessage *reply_message;
2323
DBusAsyncData *data = static_cast<DBusAsyncData *>(user_data);
24+
Nan::HandleScope scope;
25+
Nan::AsyncResource resource("node-dbus:callMethod");
2426

2527
dbus_error_init(&error);
2628

@@ -32,24 +34,21 @@ namespace NodeDBus {
3234
}
3335
dbus_pending_call_unref(pending);
3436

35-
// Get current context from V8
36-
Nan::HandleScope scope;
37-
3837
Local<Value> err = Nan::Null();
3938
if (dbus_error_is_set(&error)) {
4039
if (error.message != nullptr) {
4140
Local<Value> createErrorParameters[] = {
4241
Nan::New(error.name).ToLocalChecked(),
4342
Nan::New(error.message).ToLocalChecked()
4443
};
45-
err = data->createError->Call(2, createErrorParameters);
44+
err = data->createError->Call(2, createErrorParameters, &resource).ToLocalChecked();
4645
}
4746
else {
4847
Local<Value> createErrorParameters[] = {
4948
Nan::New(error.name).ToLocalChecked(),
5049
Nan::Undefined()
5150
};
52-
err = data->createError->Call(2, createErrorParameters);
51+
err = data->createError->Call(2, createErrorParameters, &resource).ToLocalChecked();
5352
}
5453
dbus_error_free(&error);
5554
} else if (dbus_message_get_type(reply_message) == DBUS_MESSAGE_TYPE_ERROR) {
@@ -59,14 +58,14 @@ namespace NodeDBus {
5958
Nan::New(error.name).ToLocalChecked(),
6059
Nan::New(error.message).ToLocalChecked()
6160
};
62-
err = data->createError->Call(2, createErrorParameters);
61+
err = data->createError->Call(2, createErrorParameters, &resource).ToLocalChecked();
6362
}
6463
else {
6564
Local<Value> createErrorParameters[] = {
6665
Nan::New(error.name).ToLocalChecked(),
6766
Nan::Undefined()
6867
};
69-
err = data->createError->Call(2, createErrorParameters);
68+
err = data->createError->Call(2, createErrorParameters, &resource).ToLocalChecked();
7069
}
7170
dbus_error_free(&error);
7271
}
@@ -82,7 +81,7 @@ namespace NodeDBus {
8281
dbus_message_unref(reply_message);
8382

8483
// Invoke
85-
data->callback->Call(2, info);
84+
data->callback->Call(2, info, &resource);
8685
}
8786

8887
static void method_free(void *user_data)

0 commit comments

Comments
 (0)