diff --git a/stdlib/public/core/CString.swift b/stdlib/public/core/CString.swift index 8a45fad35319e..b26b6600dd220 100644 --- a/stdlib/public/core/CString.swift +++ b/stdlib/public/core/CString.swift @@ -77,7 +77,7 @@ extension String { } @_alwaysEmitIntoClient - private init(_checkingCString bytes: UnsafeBufferPointer) { + internal init(_checkingCString bytes: UnsafeBufferPointer) { guard let length = bytes.firstIndex(of: 0) else { _preconditionFailure( "input of String.init(cString:) must be null-terminated" diff --git a/stdlib/public/core/String.swift b/stdlib/public/core/String.swift index 06fa7c0fb77f3..71552c44dc4a8 100644 --- a/stdlib/public/core/String.swift +++ b/stdlib/public/core/String.swift @@ -428,13 +428,14 @@ extension String { // check in String(decoding:as:). @_alwaysEmitIntoClient @inline(never) // slow-path - private static func _fromNonContiguousUnsafeBitcastUTF8Repairing< + internal static func _fromNonContiguousUnsafeBitcastUTF8Repairing< C: Collection >(_ input: C) -> (result: String, repairsMade: Bool) { _internalInvariant(C.Element.self == UInt8.self) return Array(input).withUnsafeBufferPointer { - let raw = UnsafeRawBufferPointer($0) - return String._fromUTF8Repairing(raw.bindMemory(to: UInt8.self)) + UnsafeRawBufferPointer($0).withMemoryRebound(to: UInt8.self) { + String._fromUTF8Repairing($0) + } } }