Compare commits

..

1 commit

Author SHA1 Message Date
DHR60
66efb0f355
Merge 8d61d6caaf into 22f0d04f01 2025-10-03 14:15:11 +08:00
2 changed files with 1 additions and 47 deletions

View file

@ -1,5 +1,4 @@
using SQLite;
namespace ServiceLib.Models;
[Serializable]
@ -11,48 +10,4 @@ public class ProfileGroupItem
public string ChildItems { get; set; }
public EMultipleLoad MultipleLoad { get; set; } = EMultipleLoad.LeastPing;
public bool HasCycle()
{
return HasCycle(new HashSet<string>(), new HashSet<string>());
}
public bool HasCycle(HashSet<string> visited, HashSet<string> stack)
{
if (string.IsNullOrEmpty(ParentIndexId))
return false;
if (stack.Contains(ParentIndexId))
return true;
if (visited.Contains(ParentIndexId))
return false;
visited.Add(ParentIndexId);
stack.Add(ParentIndexId);
if (string.IsNullOrEmpty(ChildItems))
{
return false;
}
var childIds = Utils.String2List(ChildItems)
.Where(p => !string.IsNullOrEmpty(p))
.ToList();
var childProfiles = childIds.Select(ProfileGroupItemManager.Instance.GetOrDefault)//这里是内存访问
.Where(p => p != null)
.ToList();
foreach (var child in childProfiles)
{
if (child.HasCycle(visited, stack))
{
return true;
}
}
stack.Remove(ParentIndexId);
return false;
}
}

View file

@ -496,8 +496,7 @@ public partial class CoreConfigV2rayService
return -1;
}
var hasCycle = profileGroupItem.HasCycle();
//var hasCycle = await node.HasCycle(new HashSet<string>(), new HashSet<string>());
var hasCycle = await node.HasCycle(new HashSet<string>(), new HashSet<string>());
if (hasCycle)
{
return -1;