Browse Source

tty: don't read from console stream upon creation

The tty.ReadStream constructor initializes this as a socket,
which causes a read to be initiated. Even though during stdin
initalization we call readStop shortly after, the read operation
can consume keypress events from the system buffers.

Fixes: https://github.com/nodejs/node/issues/5384

PR-URL: https://github.com/nodejs/node/pull/5776
Reviewed-By: cjihrig - Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: jasnell - James M Snell <jasnell@gmail.com>
process-exit-stdio-flushing
Alexis Campailla 9 years ago
parent
commit
4611389294
  1. 8
      lib/tty.js

8
lib/tty.js

@ -17,17 +17,23 @@ function ReadStream(fd, options) {
if (!(this instanceof ReadStream))
return new ReadStream(fd, options);
// pauseOnCreate to avoid reading from the sytem buffer
options = util._extend({
highWaterMark: 0,
readable: true,
writable: false,
handle: new TTY(fd, true)
handle: new TTY(fd, true),
pauseOnCreate: true
}, options);
net.Socket.call(this, options);
this.isRaw = false;
this.isTTY = true;
// Let the stream resume automatically when 'data' event handlers
// are added, even though it was paused on creation
this._readableState.flowing = null;
}
inherits(ReadStream, net.Socket);

Loading…
Cancel
Save