Skip to content

Commit 717081a

Browse files
committed
fix: extra child traversal in collectDirtyChildren to cause app to hang when saving object with many pointers
1 parent 49b771e commit 717081a

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

Parse/Parse/Source/PFObject.m

+3-3
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ + (BFTask *)_enqueue:(BFTask *(^)(BFTask *toAwait))taskStart forObjects:(NSArray
211211
+ (BOOL)collectDirtyChildren:(id)node
212212
children:(NSMutableSet *)dirtyChildren
213213
files:(NSMutableSet *)dirtyFiles
214-
seen:(NSSet *)seen
214+
seen:(NSMutableSet *)seen
215215
seenNew:(NSSet *)seenNew
216216
currentUser:(PFUser *)currentUser
217217
error:(NSError * __autoreleasing *)error {
@@ -292,7 +292,7 @@ + (BOOL)collectDirtyChildren:(id)node
292292
if ([seen containsObject:object]) {
293293
return YES;
294294
}
295-
seen = [seen setByAddingObject:object];
295+
[seen addObject:object];
296296

297297
// Recurse into this object's children looking for dirty children.
298298
// We only need to look at the child object's current estimated data,
@@ -334,7 +334,7 @@ + (BOOL)collectDirtyChildren:(id)child
334334
return [self collectDirtyChildren:child
335335
children:dirtyChildren
336336
files:dirtyFiles
337-
seen:[NSSet set]
337+
seen:[NSMutableSet set]
338338
seenNew:[NSSet set]
339339
currentUser:currentUser
340340
error:error];

0 commit comments

Comments
 (0)