Skip to content

Commit 1f26e35

Browse files
committed
Fix extra child traversal in collectDirtyChildren to cause app to hang when saving object with many pointers
1 parent 9771d1f commit 1f26e35

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

Parse/Parse/PFObject.m

+3-3
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ + (BFTask *)_enqueue:(BFTask *(^)(BFTask *toAwait))taskStart forObjects:(NSArray
207207
+ (BOOL)collectDirtyChildren:(id)node
208208
children:(NSMutableSet *)dirtyChildren
209209
files:(NSMutableSet *)dirtyFiles
210-
seen:(NSSet *)seen
210+
seen:(NSMutableSet *)seen
211211
seenNew:(NSSet *)seenNew
212212
currentUser:(PFUser *)currentUser
213213
error:(NSError * __autoreleasing *)error {
@@ -288,7 +288,7 @@ + (BOOL)collectDirtyChildren:(id)node
288288
if ([seen containsObject:object]) {
289289
return YES;
290290
}
291-
seen = [seen setByAddingObject:object];
291+
[seen addObject:object];
292292

293293
// Recurse into this object's children looking for dirty children.
294294
// We only need to look at the child object's current estimated data,
@@ -330,7 +330,7 @@ + (BOOL)collectDirtyChildren:(id)child
330330
return [self collectDirtyChildren:child
331331
children:dirtyChildren
332332
files:dirtyFiles
333-
seen:[NSSet set]
333+
seen:[NSMutableSet set]
334334
seenNew:[NSSet set]
335335
currentUser:currentUser
336336
error:error];

0 commit comments

Comments
 (0)