diff --git a/core/modules/forum/src/ForumManager.php b/core/modules/forum/src/ForumManager.php
index ec410de..abda126 100644
--- a/core/modules/forum/src/ForumManager.php
+++ b/core/modules/forum/src/ForumManager.php
@@ -195,6 +195,12 @@ public function getTopics($tid, AccountInterface $account) {
       $query->join('forum_index', 'f', 'f.nid = n.nid');
       $query->addField('f', 'tid', 'forum_tid');
 
+      // If the forum topic has been moved and if shadow copies were left
+      // behind, there will be multiple rows referring to it in the
+      // {forum_index} table. Ensure that we only pull one such row, with the
+      // tid corresponding to the forum's current location.
+      $query->join('forum', 'forum', 'f.nid = forum.nid AND f.tid = forum.tid');
+
       $query->join('users_field_data', 'u', 'n.uid = u.uid AND u.default_langcode = 1');
       $query->addField('u', 'name');
 
@@ -260,7 +266,7 @@ public function getTopics($tid, AccountInterface $account) {
         $last_reply->uid = $topic->last_comment_uid;
         $topic->last_reply = $last_reply;
       }
-      $topics[$topic->id()] = $topic;
+      $topics[] = $topic;
     }
 
     return array('topics' => $topics, 'header' => $header);
