diff options
author | Alan Pearce | 2025-03-11 19:35:48 +0100 |
---|---|---|
committer | Alan Pearce | 2025-03-11 19:35:48 +0100 |
commit | d99fb7b6585837a02f43d1c3f37ed172baa1bf5d (patch) | |
tree | 891e2f36f6a817eba1c755fdc77ff885a44cf5e9 | |
parent | fd19126c36267a65c0f3b5b5e27009a2b7899368 (diff) | |
download | searchix-d99fb7b6585837a02f43d1c3f37ed172baa1bf5d.tar.lz searchix-d99fb7b6585837a02f43d1c3f37ed172baa1bf5d.tar.zst searchix-d99fb7b6585837a02f43d1c3f37ed172baa1bf5d.zip |
fix: panic when source order > number of sources
Fixes: https://todo.sr.ht/~alanpearce/searchix/13
-rw-r--r-- | internal/server/mux.go | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/internal/server/mux.go b/internal/server/mux.go index 6abf84f..37435d4 100644 --- a/internal/server/mux.go +++ b/internal/server/mux.go @@ -1,14 +1,18 @@ package server import ( + "cmp" "context" "encoding/xml" "fmt" + "maps" "math" "net/http" "net/url" "path" + "slices" "strconv" + "strings" "time" "go.alanpearce.eu/searchix/frontend" @@ -47,10 +51,13 @@ func applyDevModeOverrides(cfg *config.Config) { } func sortSources(ss map[string]*config.Source) { - sources = make([]*config.Source, len(ss)) - for _, v := range ss { - sources[v.Order] = v - } + sources = slices.SortedFunc(maps.Values(ss), func(a, b *config.Source) int { + return cmp.Or( + cmp.Compare(a.Order, b.Order), + strings.Compare(a.Key, b.Key), + strings.Compare(a.Name, b.Name), + ) + }) } func NewMux( |