src: changed stdio_pipes_ to std::vector

PR-URL: https://github.com/nodejs/node/pull/23615
Reviewed-By: Sam Ruby <rubys@intertwingly.net>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
This commit is contained in:
Steven Auger 2018-10-12 14:25:42 -04:00 committed by Refael Ackermann
parent b94ce575f5
commit c979fad9bb
2 changed files with 13 additions and 15 deletions

View File

@ -390,7 +390,6 @@ SyncProcessRunner::SyncProcessRunner(Environment* env)
stdio_count_(0), stdio_count_(0),
uv_stdio_containers_(nullptr), uv_stdio_containers_(nullptr),
stdio_pipes_(nullptr),
stdio_pipes_initialized_(false), stdio_pipes_initialized_(false),
uv_process_options_(), uv_process_options_(),
@ -421,7 +420,7 @@ SyncProcessRunner::SyncProcessRunner(Environment* env)
SyncProcessRunner::~SyncProcessRunner() { SyncProcessRunner::~SyncProcessRunner() {
CHECK_EQ(lifecycle_, kHandlesClosed); CHECK_EQ(lifecycle_, kHandlesClosed);
stdio_pipes_.reset(); stdio_pipes_.clear();
delete[] file_buffer_; delete[] file_buffer_;
delete[] args_buffer_; delete[] args_buffer_;
delete[] cwd_buffer_; delete[] cwd_buffer_;
@ -500,10 +499,9 @@ Maybe<bool> SyncProcessRunner::TryInitializeAndRunLoop(Local<Value> options) {
} }
uv_process_.data = this; uv_process_.data = this;
for (uint32_t i = 0; i < stdio_count_; i++) { for (const auto& pipe : stdio_pipes_) {
SyncProcessStdioPipe* h = stdio_pipes_[i].get(); if (pipe != nullptr) {
if (h != nullptr) { r = pipe->Start();
r = h->Start();
if (r < 0) { if (r < 0) {
SetPipeError(r); SetPipeError(r);
return Just(false); return Just(false);
@ -563,12 +561,12 @@ void SyncProcessRunner::CloseStdioPipes() {
CHECK_LT(lifecycle_, kHandlesClosed); CHECK_LT(lifecycle_, kHandlesClosed);
if (stdio_pipes_initialized_) { if (stdio_pipes_initialized_) {
CHECK(stdio_pipes_); CHECK(!stdio_pipes_.empty());
CHECK_NOT_NULL(uv_loop_); CHECK_NOT_NULL(uv_loop_);
for (uint32_t i = 0; i < stdio_count_; i++) { for (const auto& pipe : stdio_pipes_) {
if (stdio_pipes_[i]) if (pipe)
stdio_pipes_[i]->Close(); pipe->Close();
} }
stdio_pipes_initialized_ = false; stdio_pipes_initialized_ = false;
@ -723,13 +721,13 @@ Local<Object> SyncProcessRunner::BuildResultObject() {
Local<Array> SyncProcessRunner::BuildOutputArray() { Local<Array> SyncProcessRunner::BuildOutputArray() {
CHECK_GE(lifecycle_, kInitialized); CHECK_GE(lifecycle_, kInitialized);
CHECK(stdio_pipes_); CHECK(!stdio_pipes_.empty());
EscapableHandleScope scope(env()->isolate()); EscapableHandleScope scope(env()->isolate());
Local<Context> context = env()->context(); Local<Context> context = env()->context();
Local<Array> js_output = Array::New(env()->isolate(), stdio_count_); Local<Array> js_output = Array::New(env()->isolate(), stdio_count_);
for (uint32_t i = 0; i < stdio_count_; i++) { for (uint32_t i = 0; i < stdio_pipes_.size(); i++) {
SyncProcessStdioPipe* h = stdio_pipes_[i].get(); SyncProcessStdioPipe* h = stdio_pipes_[i].get();
if (h != nullptr && h->writable()) if (h != nullptr && h->writable())
js_output->Set(context, i, h->GetOutputAsBuffer(env())).FromJust(); js_output->Set(context, i, h->GetOutputAsBuffer(env())).FromJust();
@ -857,8 +855,8 @@ int SyncProcessRunner::ParseStdioOptions(Local<Value> js_value) {
stdio_count_ = js_stdio_options->Length(); stdio_count_ = js_stdio_options->Length();
uv_stdio_containers_ = new uv_stdio_container_t[stdio_count_]; uv_stdio_containers_ = new uv_stdio_container_t[stdio_count_];
stdio_pipes_.reset( stdio_pipes_.clear();
new std::unique_ptr<SyncProcessStdioPipe>[stdio_count_]()); stdio_pipes_.resize(stdio_count_);
stdio_pipes_initialized_ = true; stdio_pipes_initialized_ = true;
for (uint32_t i = 0; i < stdio_count_; i++) { for (uint32_t i = 0; i < stdio_count_; i++) {

View File

@ -203,7 +203,7 @@ class SyncProcessRunner {
uint32_t stdio_count_; uint32_t stdio_count_;
uv_stdio_container_t* uv_stdio_containers_; uv_stdio_container_t* uv_stdio_containers_;
std::unique_ptr<std::unique_ptr<SyncProcessStdioPipe>[]> stdio_pipes_; std::vector<std::unique_ptr<SyncProcessStdioPipe>> stdio_pipes_;
bool stdio_pipes_initialized_; bool stdio_pipes_initialized_;
uv_process_options_t uv_process_options_; uv_process_options_t uv_process_options_;