Skip to content

Commit 3a50835

Browse files
author
Gabriel Schulhof
committed
n-api: re-write test_make_callback
This re-writes the test in C by dropping std::vector<napi_value> in favour of a C99 variable length array, and by dropping the anonymous namespace in favour of static function declarations. PR-URL: nodejs#19448 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
1 parent 9b1b810 commit 3a50835

File tree

2 files changed

+11
-12
lines changed

2 files changed

+11
-12
lines changed

test/addons-napi/test_make_callback/binding.cc test/addons-napi/test_make_callback/binding.c

+10-11
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
#include <node_api.h>
22
#include "../common.h"
3-
#include <vector>
43

5-
namespace {
4+
#define MAX_ARGUMENTS 10
65

6+
static
77
napi_value MakeCallback(napi_env env, napi_callback_info info) {
8-
const int kMaxArgs = 10;
9-
size_t argc = kMaxArgs;
10-
napi_value args[kMaxArgs];
8+
size_t argc = MAX_ARGUMENTS;
9+
size_t n;
10+
napi_value args[MAX_ARGUMENTS];
1111
// NOLINTNEXTLINE (readability/null_usage)
1212
NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL));
1313

@@ -16,9 +16,9 @@ napi_value MakeCallback(napi_env env, napi_callback_info info) {
1616
napi_value recv = args[0];
1717
napi_value func = args[1];
1818

19-
std::vector<napi_value> argv;
20-
for (size_t n = 2; n < argc; n += 1) {
21-
argv.push_back(args[n]);
19+
napi_value argv[MAX_ARGUMENTS - 2];
20+
for (n = 2; n < argc; n += 1) {
21+
argv[n - 2] = args[n];
2222
}
2323

2424
napi_valuetype func_type;
@@ -35,7 +35,7 @@ napi_value MakeCallback(napi_env env, napi_callback_info info) {
3535
napi_value result;
3636
if (func_type == napi_function) {
3737
NAPI_CALL(env, napi_make_callback(
38-
env, context, recv, func, argv.size(), argv.data(), &result));
38+
env, context, recv, func, argc - 2, argv, &result));
3939
} else {
4040
NAPI_ASSERT(env, false, "Unexpected argument type");
4141
}
@@ -45,6 +45,7 @@ napi_value MakeCallback(napi_env env, napi_callback_info info) {
4545
return result;
4646
}
4747

48+
static
4849
napi_value Init(napi_env env, napi_value exports) {
4950
napi_value fn;
5051
NAPI_CALL(env, napi_create_function(
@@ -54,6 +55,4 @@ napi_value Init(napi_env env, napi_value exports) {
5455
return exports;
5556
}
5657

57-
} // namespace
58-
5958
NAPI_MODULE(NODE_GYP_MODULE_NAME, Init)

test/addons-napi/test_make_callback/binding.gyp

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
{
44
'target_name': 'binding',
55
'defines': [ 'V8_DEPRECATION_WARNINGS=1' ],
6-
'sources': [ 'binding.cc' ]
6+
'sources': [ 'binding.c' ]
77
}
88
]
99
}

0 commit comments

Comments
 (0)