From a875f7e162dae99433f22d32cfc52360ec942aed Mon Sep 17 00:00:00 2001 From: Leo Horie Date: Mon, 20 Jun 2016 22:25:43 -0400 Subject: [PATCH] ensure upstream does not affect ended stream --- util/stream.js | 4 ++++ util/tests/test-stream.js | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/util/stream.js b/util/stream.js index 222ec078..07a6480e 100644 --- a/util/stream.js +++ b/util/stream.js @@ -132,6 +132,10 @@ function registerDependency(stream, parents) { } } function unregisterStream(stream) { + for (var i = 0; i < stream._state.parents.length; i++) { + var parent = stream._state.parents[i] + delete parent._state.deps[stream._state.id] + } for (var id in stream._state.deps) { var dependent = stream._state.deps[id] var index = dependent._state.parents.indexOf(stream) diff --git a/util/tests/test-stream.js b/util/tests/test-stream.js index 099ee4b6..1741fe3a 100644 --- a/util/tests/test-stream.js +++ b/util/tests/test-stream.js @@ -193,6 +193,16 @@ o.spec("stream", function() { o(doubled()).equals(undefined) }) + o("upstream does not affect ended stream", function() { + var stream = Stream.stream(2) + var doubled = Stream.combine(function(stream) {return stream() * 2}, [stream]) + + doubled.end(true) + + stream(4) + + o(doubled()).equals(4) + }) }) o.spec("error", function() { o("error() works", function() {