From fc03c5c68b3a6a97c788cfdc2eabe070fd06a20c Mon Sep 17 00:00:00 2001 From: akarnokd Date: Thu, 28 Jun 2018 17:15:13 +0200 Subject: [PATCH] 4.x: Zip() no need to keep reference to the parent beyond Run --- .../src/System.Reactive/Linq/Observable/Zip.cs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Zip.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Zip.cs index 2860bc941c..77d6c7401b 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Zip.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Zip.cs @@ -551,21 +551,18 @@ public Zip(IEnumerable> sources) _sources = sources; } - protected override _ CreateSink(IObserver> observer) => new _(this, observer); + protected override _ CreateSink(IObserver> observer) => new _(observer); - protected override void Run(_ sink) => sink.Run(); + protected override void Run(_ sink) => sink.Run(_sources); internal sealed class _ : IdentitySink> { - private readonly Zip _parent; - private readonly object _gate; - public _(Zip parent, IObserver> observer) + public _(IObserver> observer) : base(observer) { _gate = new object(); - _parent = parent; } private Queue[] _queues; @@ -574,9 +571,9 @@ public _(Zip parent, IObserver> observer) private static readonly IDisposable[] Disposed = new IDisposable[0]; - public void Run() + public void Run(IEnumerable> sources) { - var srcs = _parent._sources.ToArray(); + var srcs = sources.ToArray(); var N = srcs.Length;