Skip to content

Commit

Permalink
fix(audit): fix for ReactiveX#2595 which crashes in case of the durat…
Browse files Browse the repository at this point in the history
…ion Observable completes

Fixed the problem when subscribeToResult() returns null it will crash described by @deadbeef84.

audit() crashs with Observable.of()
  • Loading branch information
asnov committed Jul 12, 2017
1 parent 80a5ea7 commit b89eb31
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 1 deletion.
12 changes: 12 additions & 0 deletions spec/operators/audit-spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,18 @@ describe('Observable.prototype.audit', () => {
expectSubscriptions(e1.subscriptions).toBe(e1subs);
});

it('should mirror source if durations are Observable.of()', () => {
const e1 = hot('abcdefabcdefabcdefabcdefa|');
const e1subs = '^ !';
const e2 = Rx.Observable.of('one single value');
const expected = 'abcdefabcdefabcdefabcdefa|';

const result = e1.audit(() => e2);

expectObservable(result).toBe(expected);
expectSubscriptions(e1.subscriptions).toBe(e1subs);
});

it('should emit no values if duration is a never', () => {
const e1 = hot('----abcdefabcdefabcdefabcdefa|');
const e1subs = '^ !';
Expand Down
2 changes: 1 addition & 1 deletion src/operator/audit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ class AuditSubscriber<T, R> extends OuterSubscriber<T, R> {
this.destination.error(errorObject.e);
} else {
const innerSubscription = subscribeToResult(this, duration);
if (innerSubscription.closed) {
if (!innerSubscription || innerSubscription.closed) {
this.clearThrottle();
} else {
this.add(this.throttled = innerSubscription);
Expand Down

0 comments on commit b89eb31

Please sign in to comment.