src: use a std::vector for preload_modules · nodejs/node@8f42148
@@ -142,8 +142,7 @@ static bool throw_deprecation = false;
142142static bool trace_sync_io = false;
143143static bool track_heap_objects = false;
144144static const char* eval_string = nullptr;
145-static unsigned int preload_module_count = 0;
146-static const char** preload_modules = nullptr;
145+static std::vector<std::string> preload_modules;
147146#if HAVE_INSPECTOR
148147static bool use_inspector = false;
149148#else
@@ -3328,21 +3327,18 @@ void SetupProcessObject(Environment* env,
33283327 }
3329332833303329// -r, --require
3331-if (preload_module_count) {
3332-CHECK(preload_modules);
3330+if (!preload_modules.empty()) {
33333331 Local<Array> array = Array::New(env->isolate());
3334-for (unsigned int i = 0; i < preload_module_count; ++i) {
3332+for (unsigned int i = 0; i < preload_modules.size(); ++i) {
33353333 Local<String> module = String::NewFromUtf8(env->isolate(),
3336- preload_modules[i]);
3334+ preload_modules[i].c_str());
33373335 array->Set(i, module);
33383336 }
33393337READONLY_PROPERTY(process,
33403338"_preload_modules",
33413339 array);
334233403343-delete[] preload_modules;
3344- preload_modules = nullptr;
3345- preload_module_count = 0;
3341+ preload_modules.clear();
33463342 }
3347334333483344// --no-deprecation
@@ -3798,13 +3794,11 @@ static void ParseArgs(int* argc,
37983794const char** new_exec_argv = new const char*[nargs];
37993795const char** new_v8_argv = new const char*[nargs];
38003796const char** new_argv = new const char*[nargs];
3801-const char** local_preload_modules = new const char*[nargs];
3802379738033798for (unsigned int i = 0; i < nargs; ++i) {
38043799 new_exec_argv[i] = nullptr;
38053800 new_v8_argv[i] = nullptr;
38063801 new_argv[i] = nullptr;
3807- local_preload_modules[i] = nullptr;
38083802 }
3809380338103804// exec_argv starts with the first option, the other two start with argv[0].
@@ -3862,7 +3856,7 @@ static void ParseArgs(int* argc,
38623856exit(9);
38633857 }
38643858 args_consumed += 1;
3865-local_preload_modules[preload_module_count++] = module;
3859+preload_modules.push_back(module);
38663860 } else if (strcmp(arg, "--check") == 0 || strcmp(arg, "-c") == 0) {
38673861 syntax_check_only = true;
38683862 } else if (strcmp(arg, "--interactive") == 0 || strcmp(arg, "-i") == 0) {
@@ -3952,16 +3946,6 @@ static void ParseArgs(int* argc,
39523946memcpy(argv, new_argv, new_argc * sizeof(*argv));
39533947delete[] new_argv;
39543948 *argc = static_cast<int>(new_argc);
3955-3956-// Copy the preload_modules from the local array to an appropriately sized
3957-// global array.
3958-if (preload_module_count > 0) {
3959-CHECK(!preload_modules);
3960- preload_modules = new const char*[preload_module_count];
3961-memcpy(preload_modules, local_preload_modules,
3962- preload_module_count * sizeof(*preload_modules));
3963- }
3964-delete[] local_preload_modules;
39653949}
3966395039673951