浏览代码

Fixed Stackoverflow on MediaSourceCount

JPVenson 9 月之前
父节点
当前提交
34f3ed0a4d
共有 1 个文件被更改,包括 21 次插入10 次删除
  1. 21 10
      MediaBrowser.Controller/Entities/Video.cs

+ 21 - 10
MediaBrowser.Controller/Entities/Video.cs

@@ -152,16 +152,7 @@ namespace MediaBrowser.Controller.Entities
         {
         {
             get
             get
             {
             {
-                if (!string.IsNullOrEmpty(PrimaryVersionId))
-                {
-                    var item = LibraryManager.GetItemById(PrimaryVersionId);
-                    if (item is Video video)
-                    {
-                        return video.MediaSourceCount;
-                    }
-                }
-
-                return LinkedAlternateVersions.Length + LocalAlternateVersions.Length + 1;
+                return GetMediaSourceCount(new Stack<Guid>());
             }
             }
         }
         }
 
 
@@ -550,5 +541,25 @@ namespace MediaBrowser.Controller.Entities
 
 
             return list;
             return list;
         }
         }
+
+        private int GetMediaSourceCount(Stack<Guid> callstack)
+        {
+            if (!string.IsNullOrEmpty(PrimaryVersionId))
+            {
+                var item = LibraryManager.GetItemById(PrimaryVersionId);
+                if (item is Video video)
+                {
+                    if (callstack.Contains(video.Id))
+                    {
+                        return video.LinkedAlternateVersions.Length + video.LocalAlternateVersions.Length + 1;
+                    }
+
+                    callstack.Push(video.Id);
+                    return video.GetMediaSourceCount(callstack);
+                }
+            }
+
+            return LinkedAlternateVersions.Length + LocalAlternateVersions.Length + 1;
+        }
     }
     }
 }
 }