diff --git a/IDNACocoaTouch copy-Info.plist b/IDNACocoaTouch copy-Info.plist new file mode 100644 index 0000000..9bcb244 --- /dev/null +++ b/IDNACocoaTouch copy-Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/Sources/IDNA/Data+Extensions.swift b/Sources/IDNA/Data+Extensions.swift index 140b649..50d6995 100644 --- a/Sources/IDNA/Data+Extensions.swift +++ b/Sources/IDNA/Data+Extensions.swift @@ -10,11 +10,21 @@ import zlib extension Data { + /// Compute the CRC-32 of the data. + /// + /// Does not handle data with a `count` larger than `UInt32.max` on macOS + /// < 10.13 or on iOS < 11.0. var crc32: UInt32 { return self.withUnsafeBytes { let buffer = $0.bindMemory(to: UInt8.self) - let initial = zlib.crc32(0, nil, 0) - return UInt32(zlib.crc32(initial, buffer.baseAddress, numericCast(buffer.count))) + + if #available(macOS 10.13, iOS 11.0, tvOS 9999.0, watchOS 9999.0, *) { + let initial = zlib.crc32_z(0, nil, 0) + return UInt32(zlib.crc32_z(initial, buffer.baseAddress, buffer.count)) + } else { + let initial = zlib.crc32(0, nil, 0) + return UInt32(zlib.crc32(initial, buffer.baseAddress, UInt32(buffer.count))) + } } }