summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2018-12-15 21:20:28 +0100
committerDaniel Bevenius <daniel.bevenius@gmail.com>2018-12-21 05:02:29 +0100
commit0461e4cd9b3d637f53dec9c6336220d69c7178b0 (patch)
treece9d9b20b309e489b004f195569bb31a52e30b97 /src
parent263d13766f08fb3444c205ce7ecaaa3efd89546a (diff)
downloadandroid-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.cc31
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(),