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: https://github.com/nodejs/node/pull/12241 Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net>
This commit is contained in:
parent
2555780aa6
commit
cecdf7c118
28
src/node.cc
28
src/node.cc
@ -162,8 +162,7 @@ static bool throw_deprecation = false;
|
||||
static bool trace_sync_io = false;
|
||||
static bool track_heap_objects = false;
|
||||
static const char* eval_string = nullptr;
|
||||
static unsigned int preload_module_count = 0;
|
||||
static const char** preload_modules = nullptr;
|
||||
static std::vector<std::string> preload_modules;
|
||||
static const int v8_default_thread_pool_size = 4;
|
||||
static int v8_thread_pool_size = v8_default_thread_pool_size;
|
||||
static bool prof_process = false;
|
||||
@ -3277,21 +3276,18 @@ void SetupProcessObject(Environment* env,
|
||||
READONLY_PROPERTY(process, "_forceRepl", True(env->isolate()));
|
||||
}
|
||||
|
||||
if (preload_module_count) {
|
||||
CHECK(preload_modules);
|
||||
if (!preload_modules.empty()) {
|
||||
Local<Array> array = Array::New(env->isolate());
|
||||
for (unsigned int i = 0; i < preload_module_count; ++i) {
|
||||
for (unsigned int i = 0; i < preload_modules.size(); ++i) {
|
||||
Local<String> module = String::NewFromUtf8(env->isolate(),
|
||||
preload_modules[i]);
|
||||
preload_modules[i].c_str());
|
||||
array->Set(i, module);
|
||||
}
|
||||
READONLY_PROPERTY(process,
|
||||
"_preload_modules",
|
||||
array);
|
||||
|
||||
delete[] preload_modules;
|
||||
preload_modules = nullptr;
|
||||
preload_module_count = 0;
|
||||
preload_modules.clear();
|
||||
}
|
||||
|
||||
// --no-deprecation
|
||||
@ -3649,7 +3645,6 @@ static void ParseArgs(int* argc,
|
||||
const char** new_exec_argv = new const char*[nargs];
|
||||
const char** new_v8_argv = new const char*[nargs];
|
||||
const char** new_argv = new const char*[nargs];
|
||||
const char** local_preload_modules = new const char*[nargs];
|
||||
bool use_bundled_ca = false;
|
||||
bool use_openssl_ca = false;
|
||||
|
||||
@ -3657,7 +3652,6 @@ static void ParseArgs(int* argc,
|
||||
new_exec_argv[i] = nullptr;
|
||||
new_v8_argv[i] = nullptr;
|
||||
new_argv[i] = nullptr;
|
||||
local_preload_modules[i] = nullptr;
|
||||
}
|
||||
|
||||
// exec_argv starts with the first option, the other two start with argv[0].
|
||||
@ -3715,7 +3709,7 @@ static void ParseArgs(int* argc,
|
||||
exit(9);
|
||||
}
|
||||
args_consumed += 1;
|
||||
local_preload_modules[preload_module_count++] = module;
|
||||
preload_modules.push_back(module);
|
||||
} else if (strcmp(arg, "--check") == 0 || strcmp(arg, "-c") == 0) {
|
||||
syntax_check_only = true;
|
||||
} else if (strcmp(arg, "--interactive") == 0 || strcmp(arg, "-i") == 0) {
|
||||
@ -3835,16 +3829,6 @@ static void ParseArgs(int* argc,
|
||||
memcpy(argv, new_argv, new_argc * sizeof(*argv));
|
||||
delete[] new_argv;
|
||||
*argc = static_cast<int>(new_argc);
|
||||
|
||||
// Copy the preload_modules from the local array to an appropriately sized
|
||||
// global array.
|
||||
if (preload_module_count > 0) {
|
||||
CHECK(!preload_modules);
|
||||
preload_modules = new const char*[preload_module_count];
|
||||
memcpy(preload_modules, local_preload_modules,
|
||||
preload_module_count * sizeof(*preload_modules));
|
||||
}
|
||||
delete[] local_preload_modules;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user