Skip to content

Commit 9cb9fc2

Browse files
committed
Merge pull request #255 from ParsePlatform/nlutsenko.deleteAllEmpty
Fixed crash when using PFObject.deleteAll() with empty array.
2 parents f5e1546 + 237923d commit 9cb9fc2

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

Parse/PFObject.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2432,10 +2432,10 @@ + (BOOL)deleteAll:(NSArray *)objects error:(NSError **)error {
24322432
return [[[self deleteAllInBackground:objects] waitForResult:error] boolValue];
24332433
}
24342434

2435-
+ (BFTask *)deleteAllInBackground:(NSArray *)objects {
2435+
+ (BFTask PF_GENERIC(NSNumber *) *)deleteAllInBackground:(NSArray *)objects {
24362436
NSArray *deleteObjects = [objects copy]; // Snapshot the objects.
24372437
if (deleteObjects.count == 0) {
2438-
return [BFTask taskWithResult:objects];
2438+
return [BFTask PF_GENERIC(NSNumber *) taskWithResult:@YES];
24392439
}
24402440
return [[[[self currentUserController] getCurrentUserSessionTokenAsync] continueWithBlock:^id(BFTask *task) {
24412441
NSString *sessionToken = task.result;

Tests/Unit/ObjectUnitTests.m

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#import "PFUnitTestCase.h"
1212
#import "Parse_Private.h"
1313
#import "PFObjectPrivate.h"
14+
#import "BFTask+Private.h"
1415

1516
@interface ObjectUnitTests : PFUnitTestCase
1617

@@ -199,6 +200,30 @@ - (void)testFetchObjectWithoutObjectIdError {
199200
[self waitForTestExpectations];
200201
}
201202

203+
#pragma mark DeleteAll
204+
205+
- (void)testDeleteAllWithoutObjects {
206+
XCTAssertTrue([PFObject deleteAll:nil]);
207+
XCTAssertTrue([PFObject deleteAll:@[]]);
208+
209+
NSError *error = nil;
210+
XCTAssertTrue([PFObject deleteAll:nil error:&error]);
211+
XCTAssertNil(error);
212+
XCTAssertTrue([PFObject deleteAll:@[] error:&error]);
213+
XCTAssertNil(error);
214+
215+
XCTAssertTrue([[[PFObject deleteAllInBackground:nil] waitForResult:nil] boolValue]);
216+
XCTAssertTrue([[[PFObject deleteAllInBackground:@[]] waitForResult:nil] boolValue]);
217+
218+
XCTestExpectation *expectation = [self currentSelectorTestExpectation];
219+
[PFObject deleteAllInBackground:nil block:^(BOOL succeeded, NSError * _Nullable error) {
220+
XCTAssertTrue(succeeded);
221+
XCTAssertNil(error);
222+
[expectation fulfill];
223+
}];
224+
[self waitForTestExpectations];
225+
}
226+
202227
#pragma mark Revert
203228

204229
- (void)testRevert {

0 commit comments

Comments
 (0)