summaryrefslogtreecommitdiff
path: root/src/tty_wrap.cc
diff options
context:
space:
mode:
authorTrevor Norris <trev.norris@gmail.com>2017-04-11 16:29:39 -0600
committerAnna Henningsen <anna@addaleax.net>2017-05-10 22:21:53 +0200
commit4b9d84df51f7c1d879e27f651cd84de4cb46e229 (patch)
treeb83ff35d2e68163ee018d5794713a67b5816e66b /src/tty_wrap.cc
parentdd6e3f69a795a0ab1a27c5709869d00460f12a0d (diff)
downloadandroid-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.cc14
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