diff options
author | Trevor Norris <trev.norris@gmail.com> | 2017-04-11 16:29:39 -0600 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2017-05-10 22:21:53 +0200 |
commit | 4b9d84df51f7c1d879e27f651cd84de4cb46e229 (patch) | |
tree | b83ff35d2e68163ee018d5794713a67b5816e66b /src/tty_wrap.cc | |
parent | dd6e3f69a795a0ab1a27c5709869d00460f12a0d (diff) | |
download | android-node-v8-4b9d84df51f7c1d879e27f651cd84de4cb46e229.tar.gz android-node-v8-4b9d84df51f7c1d879e27f651cd84de4cb46e229.tar.bz2 android-node-v8-4b9d84df51f7c1d879e27f651cd84de4cb46e229.zip |
tty_wrap: throw when uv_tty_init() returns error
Also add checks in lib/tty.js and tests.
PR-URL: https://github.com/nodejs/node/pull/12892
Ref: https://github.com/nodejs/node/pull/11883
Ref: https://github.com/nodejs/node/pull/8531
Reviewed-By: Andreas Madsen <amwebdk@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Diffstat (limited to 'src/tty_wrap.cc')
-rw-r--r-- | src/tty_wrap.cc | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/tty_wrap.cc b/src/tty_wrap.cc index 82476e755d..b6e3efcc10 100644 --- a/src/tty_wrap.cc +++ b/src/tty_wrap.cc @@ -150,17 +150,25 @@ void TTYWrap::New(const FunctionCallbackInfo<Value>& args) { int fd = args[0]->Int32Value(); CHECK_GE(fd, 0); - TTYWrap* wrap = new TTYWrap(env, args.This(), fd, args[1]->IsTrue()); + int err = 0; + TTYWrap* wrap = new TTYWrap(env, args.This(), fd, args[1]->IsTrue(), &err); + if (err != 0) + return env->ThrowUVException(err, "uv_tty_init"); + wrap->UpdateWriteQueueSize(); } -TTYWrap::TTYWrap(Environment* env, Local<Object> object, int fd, bool readable) +TTYWrap::TTYWrap(Environment* env, + Local<Object> object, + int fd, + bool readable, + int* init_err) : StreamWrap(env, object, reinterpret_cast<uv_stream_t*>(&handle_), AsyncWrap::PROVIDER_TTYWRAP) { - uv_tty_init(env->event_loop(), &handle_, fd, readable); + *init_err = uv_tty_init(env->event_loop(), &handle_, fd, readable); } } // namespace node |