Fix infinite loop problem in processNewItems method

This commit is contained in:
Hank Grabowski 2022-12-29 01:20:27 -05:00
parent f8cb7cd440
commit 4d28607714

View file

@ -264,6 +264,7 @@ class EntryManagerService extends ChangeNotifier {
return int.parse(i1.id).compareTo(int.parse(i2.id)); return int.parse(i1.id).compareTo(int.parse(i2.id));
}); });
final postNodesToReturn = <_Node>{}; final postNodesToReturn = <_Node>{};
var lastCount = 0;
while (allSeenItems.isNotEmpty) { while (allSeenItems.isNotEmpty) {
final seenItemsCopy = [...allSeenItems]; final seenItemsCopy = [...allSeenItems];
for (final item in seenItemsCopy) { for (final item in seenItemsCopy) {
@ -288,11 +289,17 @@ class EntryManagerService extends ChangeNotifier {
continue; continue;
} else { } else {
injectionNode.addChild(newNode); injectionNode.addChild(newNode);
allSeenItems.remove(item);
} }
} }
allSeenItems.remove(item);
} }
} }
if (allSeenItems.isNotEmpty && allSeenItems.length == lastCount) {
_logger.severe(
'Had ${allSeenItems.length} items left over after all iterations');
break;
}
lastCount = allSeenItems.length;
} }
final updatedPosts = postNodesToReturn final updatedPosts = postNodesToReturn