From fc60a5aab087aeb3c84f836022ad739cd9e256ef Mon Sep 17 00:00:00 2001 From: Sascha Hlusiak Date: Tue, 5 Jan 2021 15:10:32 +0800 Subject: [PATCH] Fix extra child traversal in collectDirtyChildren to cause app to hang when saving object with many pointers --- Parse/Parse/PFObject.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Parse/Parse/PFObject.m b/Parse/Parse/PFObject.m index 657207dd4..2268b57d4 100644 --- a/Parse/Parse/PFObject.m +++ b/Parse/Parse/PFObject.m @@ -207,7 +207,7 @@ + (BFTask *)_enqueue:(BFTask *(^)(BFTask *toAwait))taskStart forObjects:(NSArray + (BOOL)collectDirtyChildren:(id)node children:(NSMutableSet *)dirtyChildren files:(NSMutableSet *)dirtyFiles - seen:(NSSet *)seen + seen:(NSMutableSet *)seen seenNew:(NSSet *)seenNew currentUser:(PFUser *)currentUser error:(NSError * __autoreleasing *)error { @@ -288,7 +288,7 @@ + (BOOL)collectDirtyChildren:(id)node if ([seen containsObject:object]) { return YES; } - seen = [seen setByAddingObject:object]; + [seen addObject:object]; // Recurse into this object's children looking for dirty children. // We only need to look at the child object's current estimated data, @@ -330,7 +330,7 @@ + (BOOL)collectDirtyChildren:(id)child return [self collectDirtyChildren:child children:dirtyChildren files:dirtyFiles - seen:[NSSet set] + seen:[NSMutableSet set] seenNew:[NSSet set] currentUser:currentUser error:error];