Browse Source

Merge pull request #12907 from JPVenson/bugfix/10.10/SourceCountstackoverflow

Fix stackoverflow in MediaSourceCount
Bond-009 4 months ago
parent
commit
069b518ab0
1 changed files with 21 additions and 10 deletions
  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 HashSet<Guid>());
             }
             }
         }
         }
 
 
@@ -550,5 +541,25 @@ namespace MediaBrowser.Controller.Entities
 
 
             return list;
             return list;
         }
         }
+
+        private int GetMediaSourceCount(HashSet<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.Add(video.Id);
+                    return video.GetMediaSourceCount(callstack);
+                }
+            }
+
+            return LinkedAlternateVersions.Length + LocalAlternateVersions.Length + 1;
+        }
     }
     }
 }
 }