diff --git a/CHANGES.rst b/CHANGES.rst index b35002fbc..b8cee48f4 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -2,6 +2,7 @@ Changes in 0.8.4 (2019-03-xx) =============================================== Improvements: + * Share extension: Remove image large size resizing choice if output dimension is too high to prevent memory limit exception (PR #2342). Bug fix: diff --git a/RiotShareExtension/Managers/ShareExtensionManager.m b/RiotShareExtension/Managers/ShareExtensionManager.m index 823993423..51d020ecb 100644 --- a/RiotShareExtension/Managers/ShareExtensionManager.m +++ b/RiotShareExtension/Managers/ShareExtensionManager.m @@ -23,6 +23,8 @@ NSString *const kShareExtensionManagerDidUpdateAccountDataNotification = @"kShareExtensionManagerDidUpdateAccountDataNotification"; +static const CGFloat kLargeImageSizeMaxDimension = 2048.0; + typedef NS_ENUM(NSInteger, ImageCompressionMode) { ImageCompressionModeNone, @@ -560,7 +562,9 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode) }]]; } - if (compressionSizes.large.fileSize) + // Do not offer the possibility to resize an image with a dimension above kLargeImageSizeMaxDimension, to prevent the risk of memory limit exception. + // TODO: Remove this condition when issue https://github.com/vector-im/riot-ios/issues/2341 will be fixed. + if (compressionSizes.large.fileSize && (MAX(compressionSizes.large.imageSize.width, compressionSizes.large.imageSize.height) <= kLargeImageSizeMaxDimension)) { NSString *resolution = [NSString stringWithFormat:@"%@ (%d x %d)", [MXTools fileSizeToString:compressionSizes.large.fileSize round:NO], (int)compressionSizes.large.imageSize.width, (int)compressionSizes.large.imageSize.height];