fix: prevent negative slice index when last exceeds items count #62

Merged
argoyle merged 1 commits from fix/negative-slice-index into main 2026-01-01 15:49:47 +00:00
2 changed files with 14 additions and 0 deletions
+3
View File
@@ -64,6 +64,9 @@ func GetPage[T any](items []T, first *int, after *string, last *int, before *str
} else if last != nil {
tmp = *last
sIx = len(items) - tmp
if sIx < 0 {
sIx = 0
}
eIx = len(items)
}
if cursor, err := DecodeCursor(after); err == nil && cursor != "" {
+11
View File
@@ -116,6 +116,17 @@ func TestGetPage(t *testing.T) {
EndCursor: ptr("MQ=="),
},
},
{
name: "last exceeds items count",
args: args[string]{items: []string{"1", "2", "3"}, last: ptr(10), max: 10, fn: func(s string) string { return s }},
wantItems: []string{"1", "2", "3"},
wantPageInfo: PageInfo{
StartCursor: ptr("MQ=="),
HasNextPage: false,
HasPreviousPage: false,
EndCursor: ptr("Mw=="),
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {