diff options
author | Anna Henningsen <anna@addaleax.net> | 2018-12-15 21:20:28 +0100 |
---|---|---|
committer | Daniel Bevenius <daniel.bevenius@gmail.com> | 2018-12-21 05:02:29 +0100 |
commit | 0461e4cd9b3d637f53dec9c6336220d69c7178b0 (patch) | |
tree | ce9d9b20b309e489b004f195569bb31a52e30b97 /src | |
parent | 263d13766f08fb3444c205ce7ecaaa3efd89546a (diff) | |
download | android-node-v8-0461e4cd9b3d637f53dec9c6336220d69c7178b0.tar.gz android-node-v8-0461e4cd9b3d637f53dec9c6336220d69c7178b0.tar.bz2 android-node-v8-0461e4cd9b3d637f53dec9c6336220d69c7178b0.zip |
src: use std::vector for setting up process.execPath
Use `std::vector` as an RAII-style alternative to allocating
and deleting raw memory storage.
PR-URL: https://github.com/nodejs/node/pull/25069
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/node.cc | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/src/node.cc b/src/node.cc index 6ae0753f40..2564b83ef9 100644 --- a/src/node.cc +++ b/src/node.cc @@ -1086,22 +1086,23 @@ void SetupProcessObject(Environment* env, SECURITY_REVERSIONS(V) #undef V - size_t exec_path_len = 2 * PATH_MAX; - char* exec_path = new char[exec_path_len]; - Local<String> exec_path_value; - if (uv_exepath(exec_path, &exec_path_len) == 0) { - exec_path_value = String::NewFromUtf8(env->isolate(), - exec_path, - NewStringType::kInternalized, - exec_path_len).ToLocalChecked(); - } else { - exec_path_value = String::NewFromUtf8(env->isolate(), args[0].c_str(), - NewStringType::kInternalized).ToLocalChecked(); + { + size_t exec_path_len = 2 * PATH_MAX; + std::vector<char> exec_path(exec_path_len); + Local<String> exec_path_value; + if (uv_exepath(exec_path.data(), &exec_path_len) == 0) { + exec_path_value = String::NewFromUtf8(env->isolate(), + exec_path.data(), + NewStringType::kInternalized, + exec_path_len).ToLocalChecked(); + } else { + exec_path_value = String::NewFromUtf8(env->isolate(), args[0].c_str(), + NewStringType::kInternalized).ToLocalChecked(); + } + process->Set(env->context(), + FIXED_ONE_BYTE_STRING(env->isolate(), "execPath"), + exec_path_value).FromJust(); } - process->Set(env->context(), - FIXED_ONE_BYTE_STRING(env->isolate(), "execPath"), - exec_path_value).FromJust(); - delete[] exec_path; auto debug_port_string = FIXED_ONE_BYTE_STRING(env->isolate(), "debugPort"); CHECK(process->SetAccessor(env->context(), |