diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTreeNodeComparator.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTreeNodeComparator.java
index c80f795494b7022db5387463c6beccc2e29b8602..911fae46da2ed9d2a64715f0ece547b96c84e379 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTreeNodeComparator.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTreeNodeComparator.java
@@ -24,6 +24,8 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
+import org.olat.core.logging.AssertException;
+
 /**
  * 
  * Initial date: 15 nov. 2017<br>
@@ -102,7 +104,8 @@ public class FlexiTreeNodeComparator implements Comparator<FlexiTreeTableNode> {
 	
 	private FlexiTreeTableNode root(FlexiTreeTableNode node) {
 		FlexiTreeTableNode root = node;
-		for(FlexiTreeTableNode parent=node.getParent(); parent != null; parent = parent.getParent()) {
+		int i = 0;
+		for(FlexiTreeTableNode parent=node.getParent(); parent != null && i < 100; parent = parent.getParent(), i++) {
 			root = parent;
 		}
 		return root;
@@ -112,6 +115,9 @@ public class FlexiTreeNodeComparator implements Comparator<FlexiTreeTableNode> {
 		List<FlexiTreeTableNode> nodes = new ArrayList<>();
 		for(FlexiTreeTableNode parent=node; parent != null; parent = parent.getParent()) {
 			nodes.add(parent);
+			if(nodes.size() > 255) {
+				throw new AssertException("Flexi tree parent line in an infinite loop");
+			}
 		}
 		Collections.reverse(nodes);
 		return nodes;