Skip to content

Commit 8cd378d

Browse files
committed
removed force unwrap
1 parent 50ba383 commit 8cd378d

File tree

2 files changed

+22
-15
lines changed

2 files changed

+22
-15
lines changed

Sources/TSCBasic/FileSystem.swift

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
import TSCLibc
1212
import Foundation
13-
import Dispatch
1413

1514
public enum FileSystemError: Swift.Error {
1615
/// Access to the path is denied.
@@ -515,8 +514,6 @@ public class InMemoryFileSystem: FileSystem {
515514

516515
/// The root filesytem.
517516
private var root: Node
518-
/// A dispatch queue for accessing the lock map in a thread safe manner.
519-
private let lockMapQueue = DispatchQueue(label: "org.swift.swiftpm.\(InMemoryFileSystem.self).lockQueue")
520517
/// A map that keeps weak references to all locked files.
521518
private let lockMap = NSMapTable<NSString, ReadWriteLock>(keyOptions: .copyIn, valueOptions: .weakMemory)
522519

@@ -779,17 +776,19 @@ public class InMemoryFileSystem: FileSystem {
779776
}
780777

781778
public func withLock<T>(on path: AbsolutePath, type: LockType = .exclusive, _ body: () throws -> T) throws -> T {
782-
var fileLock: ReadWriteLock?
783-
784-
lockMapQueue.sync {
785-
if let lock = lockMap.object(forKey: path.pathString as NSString) {
786-
fileLock = lock
787-
} else {
788-
fileLock = ReadWriteLock()
789-
lockMap.setObject(fileLock, forKey: path.pathString as NSString)
790-
}
779+
let lock = Lock()
780+
var fileLock: ReadWriteLock
781+
782+
lock.lock()
783+
if let lock = lockMap.object(forKey: path.pathString as NSString) {
784+
fileLock = lock
785+
} else {
786+
fileLock = ReadWriteLock()
787+
lockMap.setObject(fileLock, forKey: path.pathString as NSString)
791788
}
792-
return try fileLock!.withLock(type: type, body)
789+
lock.unlock()
790+
791+
return try fileLock.withLock(type: type, body)
793792
}
794793
}
795794

Sources/TSCBasic/Lock.swift

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,18 @@ public struct Lock {
2424
public init() {
2525
}
2626

27+
func lock() {
28+
_lock.lock()
29+
}
30+
31+
func unlock() {
32+
_lock.unlock()
33+
}
34+
2735
/// Execute the given block while holding the lock.
2836
public func withLock<T> (_ body: () throws -> T) rethrows -> T {
29-
_lock.lock()
30-
defer { _lock.unlock() }
37+
lock()
38+
defer { unlock() }
3139
return try body()
3240
}
3341
}

0 commit comments

Comments
 (0)