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:
parent
b94ce575f5
commit
c979fad9bb
@ -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++) {
|
||||||
|
@ -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_;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user