stream: prevent object map change in ReadableState
authorEvan Lucas <evanlucas@me.com>
Tue, 19 Jan 2016 14:53:38 +0000 (08:53 -0600)
committerMyles Borins <mborins@us.ibm.com>
Mon, 21 Mar 2016 19:57:53 +0000 (12:57 -0700)
ReadableState has the resumeScheduled property that helps determine if
a stream should be resumed. It was not assigned in the constructor.
When stream.resume is called on a readable stream that is not flowing,
it is set to true. This changes the property map of the ReadableState
which can cause a deopt in onEofChunk and needMoreData.

PR-URL: https://github.com/nodejs/node/pull/4761
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Brian White <mscdex@mscdex.net>
lib/_stream_readable.js

index 2b2d283..3f0188e 100644 (file)
@@ -51,6 +51,7 @@ function ReadableState(options, stream) {
   this.needReadable = false;
   this.emittedReadable = false;
   this.readableListening = false;
+  this.resumeScheduled = false;
 
   // Crypto is kind of old and crusty.  Historically, its default string
   // encoding is 'binary' so we have to make this configurable.