From 8cffc50d7da5773b696c86417239dc2baeecc558 Mon Sep 17 00:00:00 2001 From: Ryan Nystrom Date: Fri, 3 Nov 2017 11:24:29 -0700 Subject: [PATCH] Copy and nil block queue before executing #trivial Summary: Discovered in rnystrom/GitHawk#781 and introduced in d9a89c9b00aa1a9537a24d9affb6919f83065f65. Can't repro in unit test, but have obvious stack traces (see GitHawk issue) that collection is being mutated while enumerated. No changelog since this is a new fix for 3.2. Closes https://github.com/Instagram/IGListKit/pull/995 Reviewed By: manicakes Differential Revision: D6206957 Pulled By: rnystrom fbshipit-source-id: c42e3688d0f2b31693199f8015b5de48b7b3b9e6 --- Source/IGListAdapter.m | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Source/IGListAdapter.m b/Source/IGListAdapter.m index 4c15a679..c6512ed8 100644 --- a/Source/IGListAdapter.m +++ b/Source/IGListAdapter.m @@ -749,10 +749,11 @@ } - (void)exitBatchUpdates { - for (void (^block)(void) in _queuedCompletionBlocks) { + NSArray *blocks = [_queuedCompletionBlocks copy]; + _queuedCompletionBlocks = nil; + for (void (^block)(void) in blocks) { block(); } - _queuedCompletionBlocks = nil; } #pragma mark - UIScrollViewDelegate