Skip to content

Commit 897e14a

Browse files
authored
Merge pull request #82192 from tshortli/safe-stdlib
stdlib: Fix missing `unsafe` operators in more places
2 parents 9488df1 + 008efc4 commit 897e14a

File tree

11 files changed

+37
-35
lines changed

11 files changed

+37
-35
lines changed

stdlib/public/Cxx/std/String.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ extension std.string {
2626
// Use the 2 parameter constructor.
2727
// The MSVC standard library has a enable_if template guard
2828
// on the 3 parameter constructor, and thus it's not imported into Swift.
29-
std.string(buffer, string.utf8.count)
29+
unsafe std.string(buffer, string.utf8.count)
3030
#else
3131
unsafe std.string(buffer, string.utf8.count, .init())
3232
#endif
@@ -40,7 +40,7 @@ extension std.string {
4040
// Use the 2 parameter constructor.
4141
// The MSVC standard library has a enable_if template guard
4242
// on the 3 parameter constructor, and thus it's not imported into Swift.
43-
self.init(str, UTF8._nullCodeUnitOffset(in: str))
43+
unsafe self.init(str, UTF8._nullCodeUnitOffset(in: str))
4444
#else
4545
unsafe self.init(str, UTF8._nullCodeUnitOffset(in: str), .init())
4646
#endif

stdlib/public/Distributed/LocalTestingDistributedActorSystem.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ fileprivate class _Lock {
260260
#elseif os(WASI)
261261
// WASI environment has only a single thread
262262
#else
263-
self.underlying = UnsafeMutablePointer.allocate(capacity: 1)
263+
unsafe self.underlying = UnsafeMutablePointer.allocate(capacity: 1)
264264
guard unsafe pthread_mutex_init(self.underlying, nil) == 0 else {
265265
fatalError("pthread_mutex_init failed")
266266
}

stdlib/public/Synchronization/Mutex/LinuxImpl.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,19 @@ extension Atomic where Value == UInt32 {
2323
// This returns 'false' on success and 'true' on error. Check 'errno' for the
2424
// specific error value.
2525
internal borrowing func _futexLock() -> UInt32 {
26-
_swift_stdlib_futex_lock(.init(_rawAddress))
26+
unsafe _swift_stdlib_futex_lock(.init(_rawAddress))
2727
}
2828

2929
// This returns 'false' on success and 'true' on error. Check 'errno' for the
3030
// specific error value.
3131
internal borrowing func _futexTryLock() -> UInt32 {
32-
_swift_stdlib_futex_trylock(.init(_rawAddress))
32+
unsafe _swift_stdlib_futex_trylock(.init(_rawAddress))
3333
}
3434

3535
// This returns 'false' on success and 'true' on error. Check 'errno' for the
3636
// specific error value.
3737
internal borrowing func _futexUnlock() -> UInt32 {
38-
_swift_stdlib_futex_unlock(.init(_rawAddress))
38+
unsafe _swift_stdlib_futex_unlock(.init(_rawAddress))
3939
}
4040
}
4141

stdlib/public/Synchronization/Mutex/WasmImpl.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ internal func _swift_stdlib_wake(on: UnsafePointer<UInt32>, count: UInt32) -> UI
2626
extension Atomic where Value == _MutexHandle.State {
2727
internal borrowing func _wait(expected: _MutexHandle.State) {
2828
#if _runtime(_multithreaded)
29-
_ = _swift_stdlib_wait(
29+
_ = unsafe _swift_stdlib_wait(
3030
on: .init(_rawAddress),
3131
expected: expected.rawValue,
3232

@@ -39,7 +39,7 @@ extension Atomic where Value == _MutexHandle.State {
3939
internal borrowing func _wake() {
4040
#if _runtime(_multithreaded)
4141
// Only wake up 1 thread
42-
_ = _swift_stdlib_wake(on: .init(_rawAddress), count: 1)
42+
_ = unsafe _swift_stdlib_wake(on: .init(_rawAddress), count: 1)
4343
#endif
4444
}
4545
}

stdlib/public/Synchronization/Mutex/WindowsImpl.swift

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import WinSDK.core.synch
1414

1515
@available(SwiftStdlib 6.0, *)
1616
@frozen
17+
@safe
1718
@_staticExclusiveOnly
1819
public struct _MutexHandle: ~Copyable {
1920
@usableFromInline
@@ -23,28 +24,28 @@ public struct _MutexHandle: ~Copyable {
2324
@_alwaysEmitIntoClient
2425
@_transparent
2526
public init() {
26-
value = _Cell(SRWLOCK())
27+
unsafe value = _Cell(SRWLOCK())
2728
}
2829

2930
@available(SwiftStdlib 6.0, *)
3031
@_alwaysEmitIntoClient
3132
@_transparent
3233
internal borrowing func _lock() {
33-
AcquireSRWLockExclusive(value._address)
34+
unsafe AcquireSRWLockExclusive(value._address)
3435
}
3536

3637
@available(SwiftStdlib 6.0, *)
3738
@_alwaysEmitIntoClient
3839
@_transparent
3940
internal borrowing func _tryLock() -> Bool {
4041
// Windows BOOLEAN gets imported as 'UInt8'...
41-
TryAcquireSRWLockExclusive(value._address) != 0
42+
unsafe TryAcquireSRWLockExclusive(value._address) != 0
4243
}
4344

4445
@available(SwiftStdlib 6.0, *)
4546
@_alwaysEmitIntoClient
4647
@_transparent
4748
internal borrowing func _unlock() {
48-
ReleaseSRWLockExclusive(value._address)
49+
unsafe ReleaseSRWLockExclusive(value._address)
4950
}
5051
}

stdlib/public/core/CTypes.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -314,19 +314,19 @@ public struct CVaListPointer {
314314
__vr_top: UnsafeMutablePointer<Int>?,
315315
__gr_off: Int32,
316316
__vr_off: Int32) {
317-
_value = (__stack, __gr_top, __vr_top, __gr_off, __vr_off)
317+
unsafe _value = (__stack, __gr_top, __vr_top, __gr_off, __vr_off)
318318
}
319319
}
320320

321321
@_unavailableInEmbedded
322322
extension CVaListPointer: CustomDebugStringConvertible {
323323
@safe
324324
public var debugDescription: String {
325-
return "(\(_value.__stack.debugDescription), " +
326-
"\(_value.__gr_top.debugDescription), " +
327-
"\(_value.__vr_top.debugDescription), " +
328-
"\(_value.__gr_off), " +
329-
"\(_value.__vr_off))"
325+
return "(\(unsafe _value.__stack.debugDescription), " +
326+
"\(unsafe _value.__gr_top.debugDescription), " +
327+
"\(unsafe _value.__vr_top.debugDescription), " +
328+
"\(unsafe _value.__gr_off), " +
329+
"\(unsafe _value.__vr_off))"
330330
}
331331
}
332332

stdlib/public/core/KeyPath.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3120,7 +3120,7 @@ internal func _resolveRelativeIndirectableAddress(_ base: UnsafeRawPointer,
31203120
internal func _resolveCompactFunctionPointer(_ base: UnsafeRawPointer, _ offset: Int32)
31213121
-> UnsafeRawPointer {
31223122
#if SWIFT_COMPACT_ABSOLUTE_FUNCTION_POINTER
3123-
return UnsafeRawPointer(bitPattern: Int(offset))._unsafelyUnwrappedUnchecked
3123+
return unsafe UnsafeRawPointer(bitPattern: Int(offset))._unsafelyUnwrappedUnchecked
31243124
#else
31253125
return unsafe _resolveRelativeAddress(base, offset)
31263126
#endif

stdlib/public/core/StaticPrint.swift

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ extension ConstantVPrintFInterpolation {
4747
public mutating func appendInterpolation(
4848
_ pointer: @autoclosure @escaping () -> UnsafeRawBufferPointer
4949
) {
50-
appendInterpolation(pointer().baseAddress!)
50+
unsafe appendInterpolation(pointer().baseAddress!)
5151
}
5252

5353
/// Defines interpolation for UnsafeRawPointer.
@@ -64,7 +64,7 @@ extension ConstantVPrintFInterpolation {
6464
_ pointer: @autoclosure @escaping () -> UnsafeRawPointer
6565
) {
6666
formatString += "%p"
67-
arguments.append(pointer)
67+
unsafe arguments.append(pointer)
6868
}
6969
}
7070

@@ -734,7 +734,7 @@ extension UnsafeRawPointer: CVarArg {
734734
/// appropriately interpreted by C varargs.
735735
@inlinable // c-abi
736736
public var _cVarArgEncoding: [Int] {
737-
return _encodeBitsAsWords(self)
737+
return unsafe _encodeBitsAsWords(self)
738738
}
739739
}
740740

@@ -758,8 +758,8 @@ extension ConstantVPrintFArguments {
758758
@_optimize(none)
759759
internal mutating func append(_ value: @escaping () -> String) {
760760
argumentClosures.append({ continuation in
761-
value().withCString { str in
762-
continuation(str._cVarArgEncoding)
761+
unsafe value().withCString { str in
762+
unsafe continuation(str._cVarArgEncoding)
763763
}
764764
})
765765
}
@@ -817,15 +817,15 @@ internal func constant_vprintf_backend_recurse(
817817
if let closure = argumentClosures.first {
818818
closure { newArg in
819819
args.append(contentsOf: newArg)
820-
constant_vprintf_backend_recurse(
820+
unsafe constant_vprintf_backend_recurse(
821821
fmt: fmt,
822822
argumentClosures: argumentClosures.dropFirst(),
823823
args: &args
824824
)
825825
}
826826
} else {
827-
_ = withVaList(args) { valist in
828-
_swift_stdlib_vprintf(fmt, valist)
827+
_ = unsafe withVaList(args) { valist in
828+
unsafe _swift_stdlib_vprintf(fmt, valist)
829829
}
830830
}
831831
}
@@ -839,14 +839,14 @@ internal func constant_vprintf_backend(
839839
if let closure = argumentClosures.first {
840840
closure { newArg in
841841
args.append(contentsOf: newArg)
842-
constant_vprintf_backend_recurse(
842+
unsafe constant_vprintf_backend_recurse(
843843
fmt: fmt,
844844
argumentClosures: argumentClosures.dropFirst(),
845845
args: &args
846846
)
847847
}
848848
} else {
849-
constant_vprintf_backend_recurse(
849+
unsafe constant_vprintf_backend_recurse(
850850
fmt: fmt,
851851
argumentClosures: ArraySlice(argumentClosures),
852852
args: &args
@@ -864,7 +864,7 @@ public func print(_ message: ConstantVPrintFMessage) {
864864
let argumentClosures = message.interpolation.arguments.argumentClosures
865865
if Bool(_builtinBooleanLiteral: Builtin.ifdef_SWIFT_STDLIB_PRINT_DISABLED()) { return }
866866
let formatStringPointer = _getGlobalStringTablePointer(formatString)
867-
constant_vprintf_backend(
867+
unsafe constant_vprintf_backend(
868868
fmt: formatStringPointer,
869869
argumentClosures: argumentClosures
870870
)

stdlib/public/core/StringObject.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1005,7 +1005,7 @@ extension _StringObject {
10051005
_internalInvariantFailure()
10061006
}
10071007
#if !$Embedded
1008-
return _unsafeUncheckedDowncast(storage, to: __StringStorage.self)
1008+
return unsafe _unsafeUncheckedDowncast(storage, to: __StringStorage.self)
10091009
#else
10101010
return Builtin.castFromNativeObject(storage)
10111011
#endif
@@ -1044,7 +1044,7 @@ extension _StringObject {
10441044
_internalInvariantFailure()
10451045
}
10461046
#if !$Embedded
1047-
return _unsafeUncheckedDowncast(storage, to: __SharedStringStorage.self)
1047+
return unsafe _unsafeUncheckedDowncast(storage, to: __SharedStringStorage.self)
10481048
#else
10491049
return Builtin.castFromNativeObject(storage)
10501050
#endif

stdlib/public/core/UInt128.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public struct UInt128: Sendable {
4747
#if _endian(little)
4848
self = unsafe unsafeBitCast((_low, _high), to: Self.self)
4949
#else
50-
self = unsafeBitCast((_high, _low), to: Self.self)
50+
self = unsafe unsafeBitCast((_high, _low), to: Self.self)
5151
#endif
5252
}
5353

0 commit comments

Comments
 (0)