for whatever reason I was able trigger a race condition because of the last commit

This commit is contained in:
Erik 2016-01-25 17:23:57 -05:00
parent b67b6abbdf
commit f9c665a542

View File

@ -15,6 +15,7 @@ import Foundation
infix operator <~ { associativity none precedence 130 } infix operator <~ { associativity none precedence 130 }
private let lock = dispatch_semaphore_create(1)
private var swiftRegexCache = [String: NSRegularExpression]() private var swiftRegexCache = [String: NSRegularExpression]()
internal final class SwiftRegex: NSObject, BooleanType { internal final class SwiftRegex: NSObject, BooleanType {
@ -22,6 +23,10 @@ internal final class SwiftRegex: NSObject, BooleanType {
var regex: NSRegularExpression var regex: NSRegularExpression
init(target:String, pattern:String, options:NSRegularExpressionOptions?) { init(target:String, pattern:String, options:NSRegularExpressionOptions?) {
if dispatch_semaphore_wait(lock, dispatch_time(DISPATCH_TIME_NOW, Int64(10 * NSEC_PER_MSEC))) != 0 {
fatalError("This should never happen")
}
self.target = target self.target = target
if let regex = swiftRegexCache[pattern] { if let regex = swiftRegexCache[pattern] {
self.regex = regex self.regex = regex
@ -36,6 +41,7 @@ internal final class SwiftRegex: NSObject, BooleanType {
self.regex = NSRegularExpression() self.regex = NSRegularExpression()
} }
} }
dispatch_semaphore_signal(lock)
super.init() super.init()
} }