summaryrefslogtreecommitdiff
path: root/src/node.cc
diff options
context:
space:
mode:
authorSam Roberts <vieuxtech@gmail.com>2017-04-05 11:45:52 -0700
committerMyles Borins <myles.borins@gmail.com>2017-10-25 04:09:42 -0400
commit8f4214836e6201dcc19aab1741572c72844b36a8 (patch)
tree7ce59d82eeb77d78038b43ec4087d56f3be3965d /src/node.cc
parent68f698c05a2097afccdf22525b3e4d591d2c9fdf (diff)
downloadnode-new-8f4214836e6201dcc19aab1741572c72844b36a8.tar.gz
src: use a std::vector for preload_modules
A dynamically allocated array was being used, simplify the memory management by using std::vector. Backport-PR-URL: https://github.com/nodejs/node/pull/12677 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>
Diffstat (limited to 'src/node.cc')
-rw-r--r--src/node.cc28
1 files changed, 6 insertions, 22 deletions
diff --git a/src/node.cc b/src/node.cc
index 4d21f97111..3214d58f48 100644
--- a/src/node.cc
+++ b/src/node.cc
@@ -142,8 +142,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;
#if HAVE_INSPECTOR
static bool use_inspector = false;
#else
@@ -3328,21 +3327,18 @@ void SetupProcessObject(Environment* env,
}
// -r, --require
- 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
@@ -3798,13 +3794,11 @@ 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];
for (unsigned int i = 0; i < nargs; ++i) {
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].
@@ -3862,7 +3856,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) {
@@ -3952,16 +3946,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;
}