From 9c58fec8d4c3cb7a30a7d83d1262524db84d1176 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Sun, 5 Oct 2025 19:55:52 +0800 Subject: [PATCH] Bug fix --- .../Manager/ProfileGroupItemManager.cs | 42 ++++++++++++------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/v2rayN/ServiceLib/Manager/ProfileGroupItemManager.cs b/v2rayN/ServiceLib/Manager/ProfileGroupItemManager.cs index 447e7433..745186c2 100644 --- a/v2rayN/ServiceLib/Manager/ProfileGroupItemManager.cs +++ b/v2rayN/ServiceLib/Manager/ProfileGroupItemManager.cs @@ -186,27 +186,37 @@ public class ProfileGroupItemManager visited.Add(indexId); stack.Add(indexId); - Instance.TryGet(indexId, out var groupItem); - - if (groupItem == null || groupItem.ChildItems.IsNullOrEmpty()) + try { + Instance.TryGet(indexId, out var groupItem); + + if (groupItem == null || groupItem.ChildItems.IsNullOrEmpty()) + { + return false; + } + + var childIds = Utils.String2List(groupItem.ChildItems) + .Where(p => !string.IsNullOrEmpty(p)) + .ToList(); + if (childIds == null) + { + return false; + } + + foreach (var child in childIds) + { + if (HasCycle(child, visited, stack)) + { + return true; + } + } + return false; } - - var childIds = Utils.String2List(groupItem.ChildItems) - .Where(p => !string.IsNullOrEmpty(p)) - .ToList(); - - foreach (var child in childIds) + finally { - if (HasCycle(child, visited, stack)) - { - return true; - } + stack.Remove(indexId); } - - stack.Remove(indexId); - return false; } public static async Task<(List Items, ProfileGroupItem? Group)> GetChildProfileItems(string? indexId)