Skip to content

Commit 8947a4e

Browse files
committed
Avoid runtime bounds checks on backtrace counts
1 parent bf866ef commit 8947a4e

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

Sources/Testing/SourceAttribution/Backtrace.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,16 @@ public struct Backtrace: Sendable {
6767
if #available(_backtraceAsyncAPI, *) {
6868
initializedCount = backtrace_async(addresses.baseAddress!, addresses.count, nil)
6969
} else {
70-
initializedCount = .init(backtrace(addresses.baseAddress!, .init(addresses.count)))
70+
initializedCount = .init(clamping: backtrace(addresses.baseAddress!, .init(clamping: addresses.count)))
7171
}
7272
#elseif os(Android)
7373
initializedCount = addresses.withMemoryRebound(to: UnsafeMutableRawPointer.self) { addresses in
74-
.init(backtrace(addresses.baseAddress!, .init(addresses.count)))
74+
.init(clamping: backtrace(addresses.baseAddress!, .init(clamping: addresses.count)))
7575
}
7676
#elseif os(Linux)
77-
initializedCount = .init(backtrace(addresses.baseAddress!, .init(addresses.count)))
77+
initializedCount = .init(clamping: backtrace(addresses.baseAddress!, .init(clamping: addresses.count)))
7878
#elseif os(Windows)
79-
initializedCount = Int(RtlCaptureStackBackTrace(0, ULONG(addresses.count), addresses.baseAddress!, nil))
79+
initializedCount = Int(clamping: RtlCaptureStackBackTrace(0, ULONG(clamping: addresses.count), addresses.baseAddress!, nil))
8080
#elseif os(WASI)
8181
// SEE: https://github.com/WebAssembly/WASI/issues/159
8282
// SEE: https://github.com/swiftlang/swift/pull/31693

0 commit comments

Comments
 (0)