diff options
Diffstat (limited to 'src/spawn_sync.cc')
-rw-r--r-- | src/spawn_sync.cc | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/src/spawn_sync.cc b/src/spawn_sync.cc index 9b67a602c3e..73d821ae75d 100644 --- a/src/spawn_sync.cc +++ b/src/spawn_sync.cc @@ -32,6 +32,7 @@ namespace node { using v8::Array; using v8::Context; +using v8::EscapableHandleScope; using v8::FunctionCallbackInfo; using v8::Handle; using v8::HandleScope; @@ -430,7 +431,7 @@ Environment* SyncProcessRunner::env() const { Local<Object> SyncProcessRunner::Run(Local<Value> options) { - HandleScope scope(env()->isolate()); + EscapableHandleScope scope(env()->isolate()); assert(lifecycle_ == kUninitialized); @@ -439,7 +440,7 @@ Local<Object> SyncProcessRunner::Run(Local<Value> options) { Local<Object> result = BuildResultObject(); - return scope.Close(result); + return scope.Escape(result); } @@ -644,12 +645,14 @@ void SyncProcessRunner::SetPipeError(int pipe_error) { Local<Object> SyncProcessRunner::BuildResultObject() { - HandleScope scope(env()->isolate()); + EscapableHandleScope scope(env()->isolate()); - Local<Object> js_result = Object::New(); + Local<Object> js_result = Object::New(env()->isolate()); - if (GetError() != 0) - js_result->Set(env()->error_string(), Integer::New(GetError())); + if (GetError() != 0) { + js_result->Set(env()->error_string(), + Integer::New(env()->isolate(), GetError())); + } if (exit_status_ >= 0) js_result->Set(env()->status_string(), @@ -662,7 +665,7 @@ Local<Object> SyncProcessRunner::BuildResultObject() { js_result->Set(env()->signal_string(), String::NewFromUtf8(env()->isolate(), signo_string(term_signal_))); else - js_result->Set(env()->signal_string(), Null()); + js_result->Set(env()->signal_string(), Null(env()->isolate())); if (exit_status_ >= 0) js_result->Set(env()->output_string(), BuildOutputArray()); @@ -672,7 +675,7 @@ Local<Object> SyncProcessRunner::BuildResultObject() { js_result->Set(env()->pid_string(), Number::New(env()->isolate(), uv_process_.pid)); - return scope.Close(js_result); + return scope.Escape(js_result); } @@ -680,18 +683,18 @@ Local<Array> SyncProcessRunner::BuildOutputArray() { assert(lifecycle_ >= kInitialized); assert(stdio_pipes_ != NULL); - HandleScope scope(env()->isolate()); - Local<Array> js_output = Array::New(stdio_count_); + EscapableHandleScope scope(env()->isolate()); + Local<Array> js_output = Array::New(env()->isolate(), stdio_count_); for (uint32_t i = 0; i < stdio_count_; i++) { SyncProcessStdioPipe* h = stdio_pipes_[i]; if (h != NULL && h->writable()) js_output->Set(i, h->GetOutputAsBuffer()); else - js_output->Set(i, Null()); + js_output->Set(i, Null(env()->isolate())); } - return scope.Close(js_output); + return scope.Escape(js_output); } |