@@ -804,24 +804,29 @@ function emitKeypressEvents(stream) {
804
804
stream . _emitKeypress = true ;
805
805
806
806
function onData ( b ) {
807
- if ( stream . listeners ( 'keypress' ) . length > 0 ) {
808
- emitKey ( stream , b ) ;
809
- } else {
810
- // Nobody's watching anyway
811
- stream . removeListener ( 'data' , onData ) ;
812
- stream . on ( 'newListener' , onNewListener ) ;
813
- }
807
+ emitKey ( stream , b ) ;
814
808
}
815
809
816
810
function onNewListener ( event ) {
817
811
if ( event == 'keypress' ) {
818
812
stream . on ( 'data' , onData ) ;
813
+ stream . on ( 'removeListener' , onRemovedListener ) ;
819
814
stream . removeListener ( 'newListener' , onNewListener ) ;
820
815
}
821
816
}
817
+
818
+ function onRemovedListener ( event ) {
819
+ if ( event == 'keypress' && stream . listeners ( 'keypress' ) . length == 0 ) {
820
+ // Nobody's watching anyway
821
+ stream . removeListener ( 'data' , onData ) ;
822
+ stream . removeListener ( 'removeListener' , onRemovedListener ) ;
823
+ stream . on ( 'newListener' , onNewListener ) ;
824
+ }
825
+ }
822
826
823
827
if ( stream . listeners ( 'keypress' ) . length > 0 ) {
824
828
stream . on ( 'data' , onData ) ;
829
+ stream . on ( 'removeListener' , onRemovedListener ) ;
825
830
} else {
826
831
stream . on ( 'newListener' , onNewListener ) ;
827
832
}
0 commit comments