Skip to content

Commit 74ab5ba

Browse files
author
Aleksei Minaev
authored
Update order of invocation in sendNext: RACReplaySubject
valuesReceived should be cleaned up before sending value. If we have subscription and creating another subscription on the same RACReplaySubject while -take:1 it - we can get first value instead of second.
1 parent a621018 commit 74ab5ba

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

ReactiveObjC/RACReplaySubject.m

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,12 @@ - (RACDisposable *)subscribe:(id<RACSubscriber>)subscriber {
8585
- (void)sendNext:(id)value {
8686
@synchronized (self) {
8787
[self.valuesReceived addObject:value ?: RACTupleNil.tupleNil];
88-
[super sendNext:value];
8988

9089
if (self.capacity != RACReplaySubjectUnlimitedCapacity && self.valuesReceived.count > self.capacity) {
9190
[self.valuesReceived removeObjectsInRange:NSMakeRange(0, self.valuesReceived.count - self.capacity)];
9291
}
92+
93+
[super sendNext:value];
9394
}
9495
}
9596

0 commit comments

Comments
 (0)