# 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) } }