Skip to content

Commit d62f314

Browse files
committed
src: use a std::vector for preload_modules
A dynamically allocated array was being used, simplify the memory management by using std::vector. PR-URL: nodejs#12241 Reviewed-By: Richard Lau <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Daniel Bevenius <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Anna Henningsen <[email protected]>
1 parent 50e60e9 commit d62f314

File tree

1 file changed

+8
-22
lines changed

1 file changed

+8
-22
lines changed

src/node.cc

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,7 @@ static bool throw_deprecation = false;
143143
static bool trace_sync_io = false;
144144
static bool track_heap_objects = false;
145145
static const char* eval_string = nullptr;
146-
static unsigned int preload_module_count = 0;
147-
static const char** preload_modules = nullptr;
146+
static std::vector<std::string> preload_modules;
148147
static const int v8_default_thread_pool_size = 4;
149148
static int v8_thread_pool_size = v8_default_thread_pool_size;
150149
static bool prof_process = false;
@@ -3221,21 +3220,18 @@ void SetupProcessObject(Environment* env,
32213220
READONLY_PROPERTY(process, "_forceRepl", True(env->isolate()));
32223221
}
32233222

3224-
if (preload_module_count) {
3225-
CHECK(preload_modules);
3223+
if (!preload_modules.empty()) {
32263224
Local<Array> array = Array::New(env->isolate());
3227-
for (unsigned int i = 0; i < preload_module_count; ++i) {
3225+
for (unsigned int i = 0; i < preload_modules.size(); ++i) {
32283226
Local<String> module = String::NewFromUtf8(env->isolate(),
3229-
preload_modules[i]);
3227+
preload_modules[i].c_str());
32303228
array->Set(i, module);
32313229
}
32323230
READONLY_PROPERTY(process,
32333231
"_preload_modules",
32343232
array);
32353233

3236-
delete[] preload_modules;
3237-
preload_modules = nullptr;
3238-
preload_module_count = 0;
3234+
preload_modules.clear();
32393235
}
32403236

32413237
// --no-deprecation
@@ -3587,13 +3583,13 @@ static void ParseArgs(int* argc,
35873583
const char** new_exec_argv = new const char*[nargs];
35883584
const char** new_v8_argv = new const char*[nargs];
35893585
const char** new_argv = new const char*[nargs];
3590-
const char** local_preload_modules = new const char*[nargs];
3586+
bool use_bundled_ca = false;
3587+
bool use_openssl_ca = false;
35913588

35923589
for (unsigned int i = 0; i < nargs; ++i) {
35933590
new_exec_argv[i] = nullptr;
35943591
new_v8_argv[i] = nullptr;
35953592
new_argv[i] = nullptr;
3596-
local_preload_modules[i] = nullptr;
35973593
}
35983594

35993595
// exec_argv starts with the first option, the other two start with argv[0].
@@ -3651,7 +3647,7 @@ static void ParseArgs(int* argc,
36513647
exit(9);
36523648
}
36533649
args_consumed += 1;
3654-
local_preload_modules[preload_module_count++] = module;
3650+
preload_modules.push_back(module);
36553651
} else if (strcmp(arg, "--check") == 0 || strcmp(arg, "-c") == 0) {
36563652
syntax_check_only = true;
36573653
} else if (strcmp(arg, "--interactive") == 0 || strcmp(arg, "-i") == 0) {
@@ -3749,16 +3745,6 @@ static void ParseArgs(int* argc,
37493745
memcpy(argv, new_argv, new_argc * sizeof(*argv));
37503746
delete[] new_argv;
37513747
*argc = static_cast<int>(new_argc);
3752-
3753-
// Copy the preload_modules from the local array to an appropriately sized
3754-
// global array.
3755-
if (preload_module_count > 0) {
3756-
CHECK(!preload_modules);
3757-
preload_modules = new const char*[preload_module_count];
3758-
memcpy(preload_modules, local_preload_modules,
3759-
preload_module_count * sizeof(*preload_modules));
3760-
}
3761-
delete[] local_preload_modules;
37623748
}
37633749

37643750

0 commit comments

Comments
 (0)