From 4b9d84df51f7c1d879e27f651cd84de4cb46e229 Mon Sep 17 00:00:00 2001 From: Trevor Norris Date: Tue, 11 Apr 2017 16:29:39 -0600 Subject: 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 Reviewed-By: Anna Henningsen Reviewed-By: Sam Roberts Reviewed-By: Matteo Collina Reviewed-By: Refael Ackermann Reviewed-By: James M Snell Reviewed-By: Jeremiah Senkpiel --- src/tty_wrap.cc | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src/tty_wrap.cc') 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& 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, int fd, bool readable) +TTYWrap::TTYWrap(Environment* env, + Local object, + int fd, + bool readable, + int* init_err) : StreamWrap(env, object, reinterpret_cast(&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 -- cgit v1.2.3