Browse Source

Fix delay(selector) NPE on immediate emissions

Dávid Karnok 6 years ago
parent
commit
4c1ac312e5

+ 1 - 1
Rx.NET/Source/src/System.Reactive/Linq/Observable/Delay.cs

@@ -657,7 +657,7 @@ namespace System.Reactive.Linq.ObservableImpl
                     lock (_gate)
                     {
                         _atEnd = true;
-                        _subscription.Dispose();
+                        Disposable.TryDispose(ref _subscription);
 
                         CheckDone();
                     }

+ 11 - 0
Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DelayTest.cs

@@ -1813,6 +1813,17 @@ namespace ReactiveTests.Tests
             e.WaitOne();
         }
 
+        [Fact]
+        public void Delay_Selector_Immediate()
+        {
+            var result = 0;
+            var source = Observable.Return(1);
+            var delayed = source.Delay(_ => Observable.Return(2));
+            delayed.Subscribe(v => result = v);
+
+            Assert.Equal(1, result);
+        }
+
         private class MyLongRunning2 : LocalScheduler, ISchedulerLongRunning
         {
             private ManualResetEvent _start;