Skip to content

Commit

Permalink
fix potential crash into FastLock
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexander Ivlev committed Apr 28, 2021
1 parent 6e7189e commit 753ee2c
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 16 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
@@ -1,3 +1,6 @@
# v4.2.3
* Fix potential crash into FastLock. For more information saw: https://github.com/ivlevAstef/SwiftLazy/issues/6

# v4.2.2
* Improve thread safe for public scopes. Actually only if you use custom lifetime.
* Fix thread safe for methods `initializeSingletonObjects` and `initializeObjectsForScope`
Expand Down
2 changes: 1 addition & 1 deletion DITranquillity.podspec
@@ -1,7 +1,7 @@
Pod::Spec.new do |s|

s.name = 'DITranquillity'
s.version = '4.2.2'
s.version = '4.2.3'
s.summary = 'DITranquillity - Dependency injection for iOS/macOS/tvOS (Swift) '

s.description = <<-DESC
Expand Down
18 changes: 9 additions & 9 deletions DITranquillity.xcodeproj/project.pbxproj
Expand Up @@ -1220,7 +1220,7 @@
"@loader_path/Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.10;
MARKETING_VERSION = 4.2.2;
MARKETING_VERSION = 4.2.3;
OTHER_SWIFT_FLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = "com.sia.DITranquillity-OSX";
PRODUCT_NAME = DITranquillity;
Expand Down Expand Up @@ -1260,7 +1260,7 @@
"@loader_path/Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.10;
MARKETING_VERSION = 4.2.2;
MARKETING_VERSION = 4.2.3;
OTHER_SWIFT_FLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = "com.sia.DITranquillity-OSX";
PRODUCT_NAME = DITranquillity;
Expand Down Expand Up @@ -1301,7 +1301,7 @@
"@loader_path/Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.10;
MARKETING_VERSION = 4.2.2;
MARKETING_VERSION = 4.2.3;
OTHER_SWIFT_FLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = "com.sia.DITranquillity-tvOS";
PRODUCT_MODULE_NAME = DITranquillity;
Expand Down Expand Up @@ -1344,7 +1344,7 @@
"@loader_path/Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.10;
MARKETING_VERSION = 4.2.2;
MARKETING_VERSION = 4.2.3;
OTHER_SWIFT_FLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = "com.sia.DITranquillity-tvOS";
PRODUCT_MODULE_NAME = DITranquillity;
Expand Down Expand Up @@ -1507,7 +1507,7 @@
"@loader_path/Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.10;
MARKETING_VERSION = 4.2.2;
MARKETING_VERSION = 4.2.3;
OTHER_SWIFT_FLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = "com.sia.DITranquillity-iOS";
PRODUCT_NAME = DITranquillity;
Expand Down Expand Up @@ -1551,7 +1551,7 @@
"@loader_path/Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.10;
MARKETING_VERSION = 4.2.2;
MARKETING_VERSION = 4.2.3;
OTHER_SWIFT_FLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = "com.sia.DITranquillity-iOS";
PRODUCT_NAME = DITranquillity;
Expand Down Expand Up @@ -1594,7 +1594,7 @@
"@loader_path/Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.10;
MARKETING_VERSION = 4.2.2;
MARKETING_VERSION = 4.2.3;
OTHER_SWIFT_FLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = "com.sia.DITranquillity-WatchOS";
PRODUCT_MODULE_NAME = DITranquillity;
Expand Down Expand Up @@ -1640,7 +1640,7 @@
"@loader_path/Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.10;
MARKETING_VERSION = 4.2.2;
MARKETING_VERSION = 4.2.3;
OTHER_SWIFT_FLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = "com.sia.DITranquillity-WatchOS";
PRODUCT_MODULE_NAME = DITranquillity;
Expand Down Expand Up @@ -1797,7 +1797,7 @@
repositoryURL = "https://github.com/ivlevAstef/SwiftLazy";
requirement = {
kind = upToNextMinorVersion;
minimumVersion = 1.1.8;
minimumVersion = 1.1.9;
};
};
/* End XCRemoteSwiftPackageReference section */
Expand Down
Expand Up @@ -6,8 +6,8 @@
"repositoryURL": "https://github.com/ivlevAstef/SwiftLazy",
"state": {
"branch": null,
"revision": "70f0b50542d97212b8bad18075a500537c244abc",
"version": "1.1.8"
"revision": "8a6b79b5295516459aff0404a517c7f47badae3f",
"version": "1.1.9"
}
}
]
Expand Down
2 changes: 1 addition & 1 deletion Package.swift
Expand Up @@ -7,7 +7,7 @@ let package = Package(
.library(name: "DITranquillity", targets: ["DITranquillity"])
],
dependencies: [
.package(url: "https://github.com/ivlevAstef/SwiftLazy.git", from: "1.1.8")
.package(url: "https://github.com/ivlevAstef/SwiftLazy.git", from: "1.1.9")
],
targets: [
.target(name: "DITranquillity", dependencies: [
Expand Down
16 changes: 13 additions & 3 deletions Sources/Core/Internal/threads/FastLock.swift
Expand Up @@ -68,14 +68,24 @@ import Darwin
@available(iOS 10.0, *)
@available(watchOS 3.0, *)
private class UnfairLock: FastLock {
private var monitor: os_unfair_lock = os_unfair_lock()
private let monitor: os_unfair_lock_t

init() {
monitor = .allocate(capacity: 1)
monitor.initialize(to: os_unfair_lock())
}

deinit {
monitor.deinitialize(count: 1)
monitor.deallocate()
}

func lock() {
os_unfair_lock_lock(&monitor)
os_unfair_lock_lock(monitor)
}

func unlock() {
os_unfair_lock_unlock(&monitor)
os_unfair_lock_unlock(monitor)
}
}

Expand Down

0 comments on commit 753ee2c

Please sign in to comment.