@@ -34,8 +34,9 @@ public struct CognitoLoginPair: CStruct {
3434 }
3535}
3636
37- public class CredentialsProvider : CredentialsProviding {
38-
37+ // We can't mutate this class after initialization. Swift can not verify the sendability due to pointer,
38+ // So mark it unchecked Sendable
39+ public class CredentialsProvider : CredentialsProviding , @unchecked Sendable {
3940 let rawValue : UnsafeMutablePointer < aws_credentials_provider >
4041
4142 init ( credentialsProvider: UnsafeMutablePointer < aws_credentials_provider > ) {
@@ -667,25 +668,19 @@ private func onGetCredentials(credentials: OpaquePointer?,
667668 continuationCore. continuation. resume ( returning: Credentials ( rawValue: credentials!) )
668669}
669670
670- // We need to share this pointer to C in a task block but Swift compiler complains
671- // that Pointer does not conform to Sendable. Wrap the pointer in a @unchecked Sendable block
672- // for Swift compiler to stop complaining.
673- struct SendablePointer : @unchecked Sendable {
674- let pointer : UnsafeMutableRawPointer
675- }
676-
677671private func getCredentialsDelegateFn( _ delegatePtr: UnsafeMutableRawPointer ! ,
678672 _ callbackFn: ( @convention ( c) (
679673 OpaquePointer ? ,
680674 Int32 ,
681675 UnsafeMutableRawPointer ? ) -> Void ) ! ,
682676 _ userData: UnsafeMutableRawPointer ! ) -> Int32 {
683- let delegate = Unmanaged < Box < CredentialsProviding > >
684- . fromOpaque ( delegatePtr)
685- . takeUnretainedValue ( ) . contents
686- let userData = SendablePointer ( pointer: userData)
677+ let userData = SendableRawPointer ( pointer: userData)
678+ let delegatePtr = SendableRawPointer ( pointer: delegatePtr)
687679 Task {
688680 do {
681+ let delegate = Unmanaged < Box < CredentialsProviding > >
682+ . fromOpaque ( delegatePtr. pointer!)
683+ . takeUnretainedValue ( ) . contents
689684 let credentials = try await delegate. getCredentials ( )
690685 callbackFn ( credentials. rawValue, AWS_OP_SUCCESS, userData. pointer)
691686 } catch CommonRunTimeError . crtError( let crtError) {
0 commit comments