From 487004706b3cafebe0d5ea9677f31ac71d3c6ebb Mon Sep 17 00:00:00 2001
From: Pascal Bleser
Date: Wed, 24 Jun 2026 15:37:00 +0200
Subject: [PATCH] groupware: fix NPE when flattening durations in slist()
---
pkg/jmap/api.go | 6 +++++-
pkg/structs/structs.go | 8 ++++++--
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/pkg/jmap/api.go b/pkg/jmap/api.go
index a370390f9b..3c9bc20dbf 100644
--- a/pkg/jmap/api.go
+++ b/pkg/jmap/api.go
@@ -125,7 +125,11 @@ func RefineResultSlice[A, B any](a []*Result[A], refiner func([]*A, []*SessionSt
}
})
durations := structs.Flatten(structs.Map(a, func(e *Result[A]) []time.Duration {
- return e.Durations
+ if e != nil {
+ return e.Durations
+ } else {
+ return nil
+ }
}))
b, bss, bs, bl, err := refiner(payloads, sessionStates, states, languages)
return NewResult(b, bss, bs, bl, durations), err
diff --git a/pkg/structs/structs.go b/pkg/structs/structs.go
index dbf06856ca..800b63dfec 100644
--- a/pkg/structs/structs.go
+++ b/pkg/structs/structs.go
@@ -385,11 +385,15 @@ func Reduce[T any](initialValue T, s []T, reducer func(a, b T) T) T {
func Flatten[T any](s [][]T) []T {
l := 0
for _, r := range s {
- l += len(r)
+ if r != nil {
+ l += len(r)
+ }
}
result := make([]T, 0, l)
for _, r := range s {
- result = append(result, r...)
+ if r != nil {
+ result = append(result, r...)
+ }
}
return result
}