Skip to content

Commit 55fc9cc

Browse files
authored
fix(s3): adds autorelease pool around file creation for multipart uploads #4128 (#4129)
1 parent 1225baf commit 55fc9cc

File tree

2 files changed

+28
-21
lines changed

2 files changed

+28
-21
lines changed

AWSS3/AWSS3TransferUtility.m

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1367,36 +1367,38 @@ - (nullable NSURL *)createPartialFile:(NSURL *)fileURL
13671367
return nil;
13681368
}
13691369
NSUInteger remaining = length;
1370-
NSData *data;
13711370

13721371
while (remaining > 0) {
1373-
NSUInteger bufferSize = MIN(remaining, AWSS3TransferUtilityMultiPartSize);
1372+
@autoreleasepool {
1373+
NSData *data;
1374+
NSUInteger bufferSize = MIN(remaining, AWSS3TransferUtilityMultiPartSize);
13741375

1375-
// Read data
1376-
if (@available(iOS 13.0, *)) {
1377-
data = [readFileHandle readDataUpToLength:bufferSize error:error];
1378-
} else {
1379-
data = [readFileHandle readDataOfLength:bufferSize];
1380-
}
1381-
if (*error) {
1382-
break;
1383-
}
1376+
// Read data
1377+
if (@available(iOS 13.0, *)) {
1378+
data = [readFileHandle readDataUpToLength:bufferSize error:error];
1379+
} else {
1380+
data = [readFileHandle readDataOfLength:bufferSize];
1381+
}
1382+
if (*error) {
1383+
break;
1384+
}
13841385

1385-
// Write data
1386-
if (@available(iOS 13.0, *)) {
1387-
[writeFileHandle writeData:data error:error];
1388-
} else {
1389-
[writeFileHandle writeData:data];
1390-
}
1391-
if (*error) {
1392-
break;
1386+
// Write data
1387+
if (@available(iOS 13.0, *)) {
1388+
[writeFileHandle writeData:data error:error];
1389+
} else {
1390+
[writeFileHandle writeData:data];
1391+
}
1392+
if (*error) {
1393+
break;
1394+
}
1395+
remaining -= bufferSize;
1396+
data = nil;
13931397
}
1394-
remaining -= bufferSize;
13951398
}
13961399

13971400
[readFileHandle closeFile];
13981401
[writeFileHandle closeFile];
1399-
data = nil;
14001402

14011403
if (*error) {
14021404
AWSDDLogError(@"Error while creating temporary file for partial file: %@", fileURL);

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44

55
-Features for next release
66

7+
- **AWSS3**
8+
9+
- fix: Reduces memory use for multipart uploads with `@autoreleasepool` to prevent excessive memory allocation (See [PR #4129](https://github.com/aws-amplify/aws-sdk-ios/pull/4129))
10+
11+
712
## 2.27.8
813

914
### Bug Fixes

0 commit comments

Comments
 (0)