Skip to content

Commit 89ad099

Browse files
committed
fixuP
1 parent 321c41c commit 89ad099

File tree

5 files changed

+19
-3
lines changed

5 files changed

+19
-3
lines changed

‎lib/events.js‎

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ const{
8787

8888
constkCapture=Symbol('kCapture');
8989
constkErrorMonitor=Symbol('events.errorMonitor');
90+
constkShapeMode=Symbol('shapeMode');
9091
constkMaxEventTargetListeners=Symbol('events.maxEventTargetListeners');
9192
constkMaxEventTargetListenersWarned=
9293
Symbol('events.maxEventTargetListenersWarned');
@@ -344,6 +345,9 @@ EventEmitter.init = function(opts){
344345
this._events===ObjectGetPrototypeOf(this)._events){
345346
this._events={__proto__: null};
346347
this._eventsCount=0;
348+
this[kShapeMode]=false;
349+
}else{
350+
this[kShapeMode]=true;
347351
}
348352

349353
this._maxListeners=this._maxListeners||undefined;
@@ -686,9 +690,13 @@ EventEmitter.prototype.removeListener =
686690
returnthis;
687691

688692
if(list===listener||list.listener===listener){
689-
if(--this._eventsCount===0)
693+
this._eventsCount-=1;
694+
695+
if(this[kShapeMode]){
696+
events[type]=undefined;
697+
}elseif(this._eventsCount===0){
690698
this._events={__proto__: null};
691-
else{
699+
}else{
692700
deleteevents[type];
693701
if(events.removeListener)
694702
this.emit('removeListener',type,list.listener||listener);
@@ -750,6 +758,7 @@ EventEmitter.prototype.removeAllListeners =
750758
else
751759
deleteevents[type];
752760
}
761+
this[kShapeMode]=false;
753762
returnthis;
754763
}
755764

@@ -762,6 +771,7 @@ EventEmitter.prototype.removeAllListeners =
762771
this.removeAllListeners('removeListener');
763772
this._events={__proto__: null};
764773
this._eventsCount=0;
774+
this[kShapeMode]=false;
765775
returnthis;
766776
}
767777

‎lib/internal/streams/duplex.js‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ function Duplex(options){
7676
readable: undefined,
7777
pipe: undefined,
7878
unpipe: undefined,
79+
[destroyImpl.kConstruct]: undefined,
80+
[destroyImpl.kDestroy]: undefined,
7981
};
8082

8183
this._readableState=newReadable.ReadableState(options,this,true);

‎lib/internal/streams/readable.js‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,8 @@ function Readable(options){
326326
readable: undefined,
327327
pipe: undefined,
328328
unpipe: undefined,
329+
[destroyImpl.kConstruct]: undefined,
330+
[destroyImpl.kDestroy]: undefined,
329331
};
330332

331333
this._readableState=newReadableState(options,this,false);

‎lib/internal/streams/writable.js‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,8 @@ function Writable(options){
388388
prefinish: undefined,
389389
finish: undefined,
390390
drain: undefined,
391+
[destroyImpl.kConstruct]: undefined,
392+
[destroyImpl.kDestroy]: undefined,
391393
};
392394

393395
this._writableState=newWritableState(options,this,false);

‎test/parallel/test-readline-promises-interface.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class FakeInput extends EventEmitter{
2020
}
2121

2222
functionisWarned(emitter){
23-
for(constnameinemitter){
23+
for(constnameofObject.keys(emitter)){
2424
constlisteners=emitter[name];
2525
if(listeners.warned)returntrue;
2626
}

0 commit comments

Comments
(0)