diff --git a/submodules/SSignalKit/SwiftSignalKit/Source/Signal.swift b/submodules/SSignalKit/SwiftSignalKit/Source/Signal.swift index 2078378f73..6efb960bd6 100644 --- a/submodules/SSignalKit/SwiftSignalKit/Source/Signal.swift +++ b/submodules/SSignalKit/SwiftSignalKit/Source/Signal.swift @@ -24,7 +24,7 @@ public func |> (value: T, function: ((T) -> U)) -> U { } private final class SubscriberDisposable: Disposable, CustomStringConvertible { - private let subscriber: Subscriber + private weak var subscriber: Subscriber? private var lock = pthread_mutex_t() private var disposable: Disposable? @@ -41,15 +41,18 @@ private final class SubscriberDisposable: Disposable, CustomStringConverti } func dispose() { - self.subscriber.markTerminatedWithoutDisposal() + var subscriber: Subscriber? var disposeItem: Disposable? pthread_mutex_lock(&self.lock) disposeItem = self.disposable + subscriber = self.subscriber + self.subscriber = nil self.disposable = nil pthread_mutex_unlock(&self.lock) disposeItem?.dispose() + subscriber?.markTerminatedWithoutDisposal() } public var description: String {