28 lines
1.1 KiB
Diff
28 lines
1.1 KiB
Diff
# UNDF: UNDF-2026-000001092
|
|
--- a/modules/repository/init.go
|
|
+++ b/modules/repository/init.go
|
|
@@ -104,13 +104,16 @@ func LoadRepoConfig() error {
|
|
|
|
// Filter out invalid names and promote preferred licenses.
|
|
+ // Build a set for O(1) lookups to avoid O(P*L) and O(L*P) scans.
|
|
+ licensesSet := make(map[string]struct{}, len(Licenses))
|
|
+ for _, name := range Licenses {
|
|
+ licensesSet[strings.ToLower(name)] = struct{}{}
|
|
+ }
|
|
+ preferredSet := make(map[string]struct{}, len(setting.Repository.PreferredLicenses))
|
|
+ for _, name := range setting.Repository.PreferredLicenses {
|
|
+ preferredSet[strings.ToLower(name)] = struct{}{}
|
|
+ }
|
|
sortedLicenses := make([]string, 0, len(Licenses))
|
|
for _, name := range setting.Repository.PreferredLicenses {
|
|
- if util.SliceContainsString(Licenses, name, true) {
|
|
+ if _, ok := licensesSet[strings.ToLower(name)]; ok {
|
|
sortedLicenses = append(sortedLicenses, name)
|
|
}
|
|
}
|
|
for _, name := range Licenses {
|
|
- if !util.SliceContainsString(setting.Repository.PreferredLicenses, name, true) {
|
|
+ if _, ok := preferredSet[strings.ToLower(name)]; !ok {
|
|
sortedLicenses = append(sortedLicenses, name)
|
|
}
|
|
}
|