@@ -128,7 +128,7 @@ open class Thread : NSObject {
128
128
@available ( * , noasync)
129
129
open class func sleep( until date: Date ) {
130
130
#if os(Windows)
131
- var hTimer : HANDLE = CreateWaitableTimerW ( nil , true , nil )
131
+ let hTimer : HANDLE = CreateWaitableTimerW ( nil , true , nil )
132
132
if hTimer == HANDLE ( bitPattern: 0 ) { fatalError ( " unable to create timer: \( GetLastError ( ) ) " ) }
133
133
defer { CloseHandle ( hTimer) }
134
134
@@ -166,7 +166,7 @@ open class Thread : NSObject {
166
166
@available ( * , noasync)
167
167
open class func sleep( forTimeInterval interval: TimeInterval ) {
168
168
#if os(Windows)
169
- var hTimer : HANDLE = CreateWaitableTimerW ( nil , true , nil )
169
+ let hTimer : HANDLE = CreateWaitableTimerW ( nil , true , nil )
170
170
// FIXME(compnerd) how to check that hTimer is not NULL?
171
171
defer { CloseHandle ( hTimer) }
172
172
@@ -410,37 +410,41 @@ open class Thread : NSObject {
410
410
let hProcess : HANDLE = GetCurrentProcess ( )
411
411
SymSetOptions ( DWORD ( SYMOPT_UNDNAME | SYMOPT_DEFERRED_LOADS) )
412
412
if !SymInitializeW( hProcess, nil , true ) {
413
- return [ ]
413
+ return [ ]
414
414
}
415
415
return backtraceAddresses { ( addresses, count) in
416
- var symbols : [ String ] = [ ]
417
-
418
- let addresses : UnsafeMutableBufferPointer < PVOID ? > =
419
- UnsafeMutableBufferPointer < PVOID ? > ( start: addresses, count: count)
420
- withUnsafeTemporaryAllocation ( byteCount: MemoryLayout < SYMBOL_INFO > . size + 127 ,
421
- alignment: 8 ) { buffer in
422
- let pSymbolInfo : UnsafeMutablePointer < SYMBOL_INFO > =
416
+ var symbols : [ String ] = [ ]
417
+
418
+ let addresses : UnsafeMutableBufferPointer < PVOID ? > =
419
+ UnsafeMutableBufferPointer < PVOID ? > ( start: addresses, count: count)
420
+ withUnsafeTemporaryAllocation ( byteCount: MemoryLayout < SYMBOL_INFO > . size + 127 ,
421
+ alignment: 8 ) { buffer in
422
+ let pSymbolInfo : UnsafeMutablePointer < SYMBOL_INFO > =
423
423
buffer. baseAddress!. assumingMemoryBound ( to: SYMBOL_INFO . self)
424
-
425
- for address in addresses {
426
- pSymbolInfo. pointee. SizeOfStruct =
424
+
425
+ for address in addresses {
426
+ pSymbolInfo. pointee. SizeOfStruct =
427
427
ULONG ( MemoryLayout< SYMBOL_INFO> . size)
428
- pSymbolInfo. pointee. MaxNameLen = 128
429
-
430
- var dwDisplacement : DWORD64 = 0
431
- if SymFromAddr ( hProcess, DWORD64 ( UInt ( bitPattern: address) ) ,
432
- & dwDisplacement, & pSymbolInfo. pointee) {
433
- symbols. append ( String ( unsafeUninitializedCapacity: Int ( pSymbolInfo. pointee. NameLen) + 1 ) {
434
- strncpy ( $0. baseAddress, & pSymbolInfo. pointee. Name, $0. count)
435
- return $0. count
436
- } )
437
- } else {
438
- symbols. append ( " \( address) " )
439
- }
428
+ pSymbolInfo. pointee. MaxNameLen = 128
429
+
430
+ var dwDisplacement : DWORD64 = 0
431
+ if SymFromAddr ( hProcess, DWORD64 ( UInt ( bitPattern: address) ) ,
432
+ & dwDisplacement, & pSymbolInfo. pointee) {
433
+ symbols. append ( String ( unsafeUninitializedCapacity: Int ( pSymbolInfo. pointee. NameLen) + 1 ) {
434
+ strncpy_s ( $0. baseAddress, $0. count, & pSymbolInfo. pointee. Name, $0. count)
435
+ return $0. count
436
+ } )
437
+ } else {
438
+ if let address {
439
+ symbols. append ( " \( address) " )
440
+ } else {
441
+ symbols. append ( " <unknown address> " )
442
+ }
443
+ }
444
+ }
440
445
}
441
- }
442
-
443
- return symbols
446
+
447
+ return symbols
444
448
}
445
449
#else
446
450
return backtraceAddresses ( { ( addrs, count) in
0 commit comments