diff --git a/CHANGELOG.md b/CHANGELOG.md index d114b5d14..eb261bed9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,21 @@ # Changelog +## 7.6.1 +* Supports [SDL RPC Spec 8.0.0](https://github.com/smartdevicelink/rpc_spec/releases/tag/8.0.0) and [SDL Protocol Spec 5.4.1](https://github.com/smartdevicelink/protocol_spec/releases/tag/5.4.1). + +### Testing +* Xcode 14.3.1 +* iOS 15.7.1 / iOS 16.2.1 +* Core: + * Manticore (Core v8.2.0, Generic HMI v0.12.0) + * Ford Sync 3.4 (19353_DEVTEST) + * Ford Sync 3.4 (19317_DEVTEST) + * Ford Sync 4.0 (20016_DEVTEST) + * Core v8.2.0 with sdl_hmi v5.8.0 and generic_hmi v0.13.0 + +### Bug Fixes +* Fatal Exception: NSRangeException (https://github.com/smartdevicelink/sdl_ios/issues/2116) +* SDL App Crash (https://github.com/smartdevicelink/sdl_ios/issues/2112) + ## 7.6.0 * Supports [SDL RPC Spec 8.0.0](https://github.com/smartdevicelink/rpc_spec/releases/tag/8.0.0) and [SDL Protocol Spec 5.4.1](https://github.com/smartdevicelink/protocol_spec/releases/tag/5.4.1). diff --git a/SmartDeviceLink-iOS.podspec b/SmartDeviceLink-iOS.podspec index c18092c69..3982fb910 100644 --- a/SmartDeviceLink-iOS.podspec +++ b/SmartDeviceLink-iOS.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "SmartDeviceLink-iOS" -s.version = "7.6.0" +s.version = "7.6.1" s.summary = "Connect your app with cars!" s.homepage = "https://github.com/smartdevicelink/SmartDeviceLink-iOS" s.license = { :type => "New BSD", :file => "LICENSE" } diff --git a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj index 98a18cdf5..5a6fe00e7 100644 --- a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj +++ b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj @@ -9475,7 +9475,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 7.6.0; + MARKETING_VERSION = 7.6.1; PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.SDLTestApp; PRODUCT_NAME = "SDL Example"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -9497,7 +9497,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 7.6.0; + MARKETING_VERSION = 7.6.1; PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.SDLTestApp; PRODUCT_NAME = "SDL Example"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -9550,7 +9550,7 @@ "@loader_path/Frameworks", ); LIBRARY_SEARCH_PATHS = "$(inherited)"; - MARKETING_VERSION = 7.6.0; + MARKETING_VERSION = 7.6.1; PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.smartdevicelink; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -9607,7 +9607,7 @@ "@loader_path/Frameworks", ); LIBRARY_SEARCH_PATHS = "$(inherited)"; - MARKETING_VERSION = 7.6.0; + MARKETING_VERSION = 7.6.1; PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.smartdevicelink; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -9717,7 +9717,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 7.6.0; + MARKETING_VERSION = 7.6.1; PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.SDLTestApp; PRODUCT_NAME = "SDL Example Swift"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -9743,7 +9743,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 7.6.0; + MARKETING_VERSION = 7.6.1; PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.SDLTestApp; PRODUCT_NAME = "SDL Example Swift"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -9794,7 +9794,7 @@ "@loader_path/Frameworks", ); LIBRARY_SEARCH_PATHS = "$(inherited)"; - MARKETING_VERSION = 7.6.0; + MARKETING_VERSION = 7.6.1; PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.SmartDeviceLinkSwift; PRODUCT_NAME = "$(TARGET_NAME)"; RUN_CLANG_STATIC_ANALYZER = YES; @@ -9849,7 +9849,7 @@ "@loader_path/Frameworks", ); LIBRARY_SEARCH_PATHS = "$(inherited)"; - MARKETING_VERSION = 7.6.0; + MARKETING_VERSION = 7.6.1; PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.SmartDeviceLinkSwift; PRODUCT_NAME = "$(TARGET_NAME)"; RUN_CLANG_STATIC_ANALYZER = YES; diff --git a/SmartDeviceLink.podspec b/SmartDeviceLink.podspec index 98ee685a4..7e4fc41f0 100644 --- a/SmartDeviceLink.podspec +++ b/SmartDeviceLink.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "SmartDeviceLink" -s.version = "7.6.0" +s.version = "7.6.1" s.summary = "Connect your app with cars!" s.homepage = "https://github.com/smartdevicelink/SmartDeviceLink-iOS" s.license = { :type => "New BSD", :file => "LICENSE" } diff --git a/SmartDeviceLink/private/SDLIAPDataSession.m b/SmartDeviceLink/private/SDLIAPDataSession.m index be8b8cfbb..6d4abb5c3 100644 --- a/SmartDeviceLink/private/SDLIAPDataSession.m +++ b/SmartDeviceLink/private/SDLIAPDataSession.m @@ -58,10 +58,24 @@ - (void)writeDataToSessionStream { if (bytesWritten >= 0) { if (bytesWritten == bytesRemaining) { [self.sendDataQueue popBuffer]; - } else if (bytesRemaining > bytesWritten) { + } else if (bytesRemaining > bytesWritten && remainder.length > bytesWritten) { // Cleave the sent bytes from the data, the remainder will sit at the head of the queue - SDLLogV(@"SDLIAPDataSession writeDataToSessionStream bytes written %ld", (long)bytesWritten); - [remainder replaceBytesInRange:NSMakeRange(0, (NSUInteger)bytesWritten) withBytes:NULL length:0]; + @try { + SDLLogV(@"SDLIAPDataSession writeDataToSessionStream bytes written %ld", (long)bytesWritten); + NSData *rem = [remainder subdataWithRange:NSMakeRange((NSUInteger)bytesWritten, remainder.length - (NSUInteger)bytesWritten)]; + [remainder setLength:[rem length]]; + [remainder setData:rem]; + } @catch (NSException __unused *exception) { + SDLLogE(@"Unable to remove sent bytes using the subDataWithRange method. Will try with replaceBytesInRange:"); + @try { + SDLLogV(@"SDLIAPDataSession writeDataToSessionStream bytes written %ld", (long)bytesWritten); + [remainder replaceBytesInRange:NSMakeRange(0, (NSUInteger)bytesWritten) withBytes:NULL length:0]; + } @catch (NSException *exception) { + // Error processing current data. Remove corrupted buffer + SDLLogE(@"Unable to remove sent bytes. Bytes remaining is less than bytes written %lu < %lu. Clearing buffer", bytesRemaining, bytesWritten); + [self.sendDataQueue popBuffer]; + } + } } else { // Error processing current data. Remove corrupted buffer SDLLogE(@"Unable to remove sent bytes. Bytes remaining is less than bytes written %lu < %lu. Clearing buffer", bytesRemaining, bytesWritten); diff --git a/docs/Classes/SDLFileManager.html b/docs/Classes/SDLFileManager.html index 5e8c83a45..d2e052606 100644 --- a/docs/Classes/SDLFileManager.html +++ b/docs/Classes/SDLFileManager.html @@ -183,7 +183,7 @@

Objective-C

Swift

-
func start() async throws -> Bool
+
func start() async throws -> Bool
@@ -253,7 +253,7 @@

Objective-C

Swift

-
func delete(fileName name: String) async throws -> (Bool, UInt)
+
func delete(fileName name: String) async throws -> (Bool, UInt)
@@ -281,7 +281,7 @@

Objective-C

Swift

-
func delete(fileNames names: [String]) async throws
+
func delete(fileNames names: [String]) async throws
@@ -308,7 +308,7 @@

Objective-C

Swift

-
func upload(file: SDLFile) async throws -> (Bool, UInt)
+
func upload(file: SDLFile) async throws -> (Bool, UInt)
@@ -339,7 +339,7 @@

Objective-C

Swift

-
func upload(files: [SDLFile], progressHandler: SDLFileManagerMultiUploadProgressHandler?) async throws
+
func upload(files: [SDLFile], progressHandler: SDLFileManagerMultiUploadProgressHandler?) async throws
@@ -368,7 +368,7 @@

Objective-C

Swift

-
func upload(files: [SDLFile]) async throws
+
func upload(files: [SDLFile]) async throws
@@ -426,7 +426,7 @@

Objective-C

Swift

-
func upload(artwork: SDLArtwork) async throws -> (Bool, String, UInt)
+
func upload(artwork: SDLArtwork) async throws -> (Bool, String, UInt)
@@ -453,7 +453,7 @@

Objective-C

Swift

-
func upload(artworks: [SDLArtwork]) async throws -> [String]
+
func upload(artworks: [SDLArtwork]) async throws -> [String]
@@ -485,7 +485,7 @@

Objective-C

Swift

-
func upload(artworks: [SDLArtwork], progressHandler: SDLFileManagerMultiUploadArtworkProgressHandler?) async throws -> [String]
+
func upload(artworks: [SDLArtwork], progressHandler: SDLFileManagerMultiUploadArtworkProgressHandler?) async throws -> [String]
diff --git a/docs/Classes/SDLManager.html b/docs/Classes/SDLManager.html index 6e5c1a0cf..cf03081de 100644 --- a/docs/Classes/SDLManager.html +++ b/docs/Classes/SDLManager.html @@ -447,7 +447,7 @@

Objective-C

Swift

-
func send(_ requests: [SDLRPCRequest], progressHandler: SDLMultipleAsyncRequestProgressHandler?) async -> Bool
+
func send(_ requests: [SDLRPCRequest], progressHandler: SDLMultipleAsyncRequestProgressHandler?) async -> Bool
@@ -479,7 +479,7 @@

Objective-C

Swift

-
func sendSequential(requests: [SDLRPCRequest], progressHandler: SDLMultipleSequentialRequestProgressHandler?) async -> Bool
+
func sendSequential(requests: [SDLRPCRequest], progressHandler: SDLMultipleSequentialRequestProgressHandler?) async -> Bool
diff --git a/docs/Classes/SDLPermissionManager.html b/docs/Classes/SDLPermissionManager.html index 558c41e62..64d8a8493 100644 --- a/docs/Classes/SDLPermissionManager.html +++ b/docs/Classes/SDLPermissionManager.html @@ -54,7 +54,7 @@

Objective-C

Swift

-
func start() async throws -> Bool
+
func start() async throws -> Bool
diff --git a/docs/Classes/SDLScreenManager.html b/docs/Classes/SDLScreenManager.html index 487e1bb3a..94d9b44e7 100644 --- a/docs/Classes/SDLScreenManager.html +++ b/docs/Classes/SDLScreenManager.html @@ -560,7 +560,7 @@

Objective-C

Swift

-
func start() async throws
+
func start() async throws
@@ -653,7 +653,7 @@

Objective-C

Swift

-
func endUpdates() async throws
+
func endUpdates() async throws
@@ -684,7 +684,7 @@

Objective-C

Swift

-
func changeLayout(_ templateConfiguration: SDLTemplateConfiguration) async throws
+
func changeLayout(_ templateConfiguration: SDLTemplateConfiguration) async throws
@@ -808,7 +808,7 @@

Objective-C

Swift

-
func unsubscribeButton(_ buttonName: SDLButtonName, withObserver observer: NSObjectProtocol) async throws
+
func unsubscribeButton(_ buttonName: SDLButtonName, withObserver observer: NSObjectProtocol) async throws
@@ -836,7 +836,7 @@

Objective-C

Swift

-
func preloadChoices(_ choices: [SDLChoiceCell]) async throws
+
func preloadChoices(_ choices: [SDLChoiceCell]) async throws
@@ -1046,7 +1046,7 @@

Objective-C

Swift

-
func presentAlert(_ alert: SDLAlertView) async throws
+
func presentAlert(_ alert: SDLAlertView) async throws
diff --git a/docs/Classes/SDLSystemCapabilityManager.html b/docs/Classes/SDLSystemCapabilityManager.html index 2d79f503b..cc47c3045 100644 --- a/docs/Classes/SDLSystemCapabilityManager.html +++ b/docs/Classes/SDLSystemCapabilityManager.html @@ -645,7 +645,7 @@

Objective-C

Swift

-
func updateCapabilityType(_ type: SDLSystemCapabilityType) async throws -> SDLSystemCapabilityManager
+
func updateCapabilityType(_ type: SDLSystemCapabilityType) async throws -> SDLSystemCapabilityManager
diff --git a/docs/Constants.html b/docs/Constants.html index 93d2cc297..56d2b0cac 100644 --- a/docs/Constants.html +++ b/docs/Constants.html @@ -24717,6 +24717,9 @@

Objective-C

extern const unsigned char SmartDeviceLinkVersionString[]
+

Swift

+
let SmartDeviceLinkVersionString: <<error type>>
+ diff --git a/docs/Protocols/SDLKeyboardDelegate.html b/docs/Protocols/SDLKeyboardDelegate.html index 088ec9160..6aabb1a6b 100644 --- a/docs/Protocols/SDLKeyboardDelegate.html +++ b/docs/Protocols/SDLKeyboardDelegate.html @@ -138,7 +138,7 @@

Objective-C

Swift

-
optional func updateCharacterSet(withInput currentInputText: String) async -> [String]?
+
optional func updateCharacterSet(withInput currentInputText: String) async -> [String]?
diff --git a/docs/Protocols/SDLSecurityType.html b/docs/Protocols/SDLSecurityType.html index 6d5c75387..399aa13e3 100644 --- a/docs/Protocols/SDLSecurityType.html +++ b/docs/Protocols/SDLSecurityType.html @@ -56,7 +56,7 @@

Objective-C

Swift

-
func initialize(withAppId appId: String) async throws
+
func initialize(withAppId appId: String) async throws
diff --git a/docs/undocumented.json b/docs/undocumented.json index 6eb64d1f3..824d896b9 100644 --- a/docs/undocumented.json +++ b/docs/undocumented.json @@ -2,5 +2,5 @@ "warnings": [ ], - "source_directory": "/Users/joelfischer/Developer/livio/sdl/sdl_ios" + "source_directory": "/Users/frankelias/Desktop/sdl-main/sdl_ios" } \ No newline at end of file