From f1bf0d0fc4690e4598d9e761a3818a5a58984a71 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Wed, 24 Nov 2010 06:23:48 +0000 Subject: [PATCH] BUGFIX Aborting marking in Hierarchy->markPartialTree() before loading nodes, if the expected node count would exceed the totals (regardless of the in-memory marking state) git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@114133 467b73ca-7a2a-4603-9d3b-597d59a354a9 --- core/model/Hierarchy.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/model/Hierarchy.php b/core/model/Hierarchy.php index 3bdd6bf83..4a143e365 100755 --- a/core/model/Hierarchy.php +++ b/core/model/Hierarchy.php @@ -100,6 +100,10 @@ class Hierarchy extends DataObjectDecorator { // foreach can't handle an ever-growing $nodes list while(list($id, $node) = each($this->markedNodes)) { + // Inspect the number of potential nodes to mark - if its more than the minimum count, + // don't query them in the first place to inspect further marking state in-memory + if((sizeof($this->markedNodes) + $node->$numChildrenMethod()) >= $minNodeCount) break; + $this->markChildren($node, $context, $childrenMethod, $numChildrenMethod); if($minNodeCount && sizeof($this->markedNodes) >= $minNodeCount) { break;