File tree Expand file tree Collapse file tree 2 files changed +40
-1
lines changed
src/System.Reactive/Linq/Observable
tests/Tests.System.Reactive/Tests/Linq/Observable Expand file tree Collapse file tree 2 files changed +40
-1
lines changed Original file line number Diff line number Diff line change @@ -661,7 +661,11 @@ private void OnCompleted(int index)
661661 }
662662 else
663663 {
664- _subscriptions [ index ] . Dispose ( ) ;
664+ var subscriptions = Volatile . Read ( ref _subscriptions ) ;
665+ if ( subscriptions != null && subscriptions != Array . Empty < IDisposable > ( ) )
666+ {
667+ Disposable . TryDispose ( ref subscriptions [ index ] ) ;
668+ }
665669 }
666670 }
667671 }
Original file line number Diff line number Diff line change @@ -4448,6 +4448,41 @@ public void Zip_AtLeastOneThrows4()
44484448
44494449 #endregion
44504450
4451+ [ Fact ]
4452+ public void Zip2WithImmediateReturn ( )
4453+ {
4454+ Observable . Zip < Unit , Unit , Unit > (
4455+ Observable . Return ( Unit . Default ) ,
4456+ Observable . Return ( Unit . Default ) ,
4457+ ( _ , __ ) => Unit . Default
4458+ )
4459+ . Subscribe ( _ => { } ) ;
4460+ }
4461+
4462+ [ Fact ]
4463+ public void Zip3WithImmediateReturn ( )
4464+ {
4465+ Observable . Zip < Unit , Unit , Unit , Unit > (
4466+ Observable . Return ( Unit . Default ) ,
4467+ Observable . Return ( Unit . Default ) ,
4468+ Observable . Return ( Unit . Default ) ,
4469+ ( _ , __ , ___ ) => Unit . Default
4470+ )
4471+ . Subscribe ( _ => { } ) ;
4472+ }
4473+
4474+ [ Fact ]
4475+ public void ZipEnumerableWithImmediateReturn ( )
4476+ {
4477+ Enumerable . Range ( 0 , 100 )
4478+ . Select ( _ => Observable . Return ( Unit . Default ) )
4479+ . Zip ( )
4480+ . Subscribe ( _ =>
4481+ {
4482+
4483+ }
4484+ ) ;
4485+ }
44514486 }
44524487#pragma warning restore IDE0039 // Use local function
44534488}
You can’t perform that action at this time.
0 commit comments