Permalink
Browse files

readline: don't cache the "keypress" listeners

it's not safe to since `removeAllListeners()` will detach the returned
Array from the stream instance if that's ever called by the user.
  • Loading branch information...
1 parent c9a1b5d commit 032fc42e64fdb5ab0b5182ea39a0487b40638c82 @TooTallNate TooTallNate committed with isaacs Jun 14, 2012
Showing with 2 additions and 4 deletions.
  1. +2 −4 lib/readline.js
View
@@ -786,10 +786,8 @@ function emitKeypressEvents(stream) {
if (stream._emitKeypress) return;
stream._emitKeypress = true;
- var keypressListeners = stream.listeners('keypress');
-
function onData(b) {
- if (keypressListeners.length) {
+ if (stream.listeners('keypress').length > 0) {
emitKey(stream, b);
} else {
// Nobody's watching anyway
@@ -805,7 +803,7 @@ function emitKeypressEvents(stream) {
}
}
- if (keypressListeners.length) {
+ if (stream.listeners('keypress').length > 0) {
stream.on('data', onData);
} else {
stream.on('newListener', onNewListener);

0 comments on commit 032fc42

Please sign in to comment.