Ver Fonte

Fixed Stackoverflow on MediaSourceCount

JPVenson há 9 meses atrás
pai
commit
34f3ed0a4d
1 ficheiros alterados com 21 adições e 10 exclusões
  1. 21 10
      MediaBrowser.Controller/Entities/Video.cs

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

@@ -152,16 +152,7 @@ namespace MediaBrowser.Controller.Entities
         {
             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;
         }
+
+        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;
+        }
     }
 }