diff --git a/include/class.topic.php b/include/class.topic.php
index 7ef0ad412bc944d5ddf00699d4725cabe2902d59..2c9fff508a3024bcfad223909309bcbaba2f0045 100644
--- a/include/class.topic.php
+++ b/include/class.topic.php
@@ -212,8 +212,12 @@ class Topic {
             if ($publicOnly && !$info['public'])
                 continue;
             $name = $info['topic'];
+            $loop = array($id=>true);
             while ($info['pid'] && ($info = $topics[$info['pid']])) {
                 $name = sprintf('%s / %s', $info['topic'], $name);
+                if (isset($loop[$info['pid']]))
+                    break;
+                $loop[$info['pid']] = true;
             }
             $names[$id] = $name;
         }