fix: Fix npe in pagination (#23880)

This commit is contained in:
Eric Warehime 2025-03-04 12:31:12 -05:00 committed by GitHub
parent 4d474617de
commit 44bd60f7e3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 16 additions and 1 deletions

View File

@ -53,6 +53,7 @@ Every module contains its own CHANGELOG.md. Please refer to the module you are i
### Bug Fixes
* (x/auth) [#23741](https://github.com/cosmos/cosmos-sdk/pull/23741) Support legacy global AccountNumber.
* (types/query) [#23880](https://github.com/cosmos/cosmos-sdk/pull/23880) Fix NPE in query pagination.
### Removed

View File

@ -112,7 +112,7 @@ func CollectionFilteredPaginate[K, V any, C Collection[K, V], T any](
return results, new(PageResponse), nil
}
// strip the prefix from next key
if len(pageRes.NextKey) != 0 && prefix != nil {
if pageRes != nil && len(pageRes.NextKey) != 0 && prefix != nil {
pageRes.NextKey = pageRes.NextKey[len(prefix):]
}
return results, pageRes, err

View File

@ -2,6 +2,7 @@ package query
import (
"context"
"errors"
"testing"
"github.com/stretchr/testify/require"
@ -15,6 +16,7 @@ func TestCollectionPagination(t *testing.T) {
sk, ctx := deps()
sb := collections.NewSchemaBuilder(sk)
m := collections.NewMap(sb, collections.NewPrefix(0), "_", collections.Uint64Key, collections.Uint64Value)
dummyErr := errors.New("dummy error")
for i := uint64(0); i < 300; i++ {
require.NoError(t, m.Set(ctx, i, i))
@ -152,6 +154,18 @@ func TestCollectionPagination(t *testing.T) {
{Key: 295, Value: 295},
},
},
"filtered no key with error": {
req: &PageRequest{
Limit: 3,
},
expResp: &PageResponse{
NextKey: encodeKey(5),
},
filter: func(key, value uint64) (bool, error) {
return false, dummyErr
},
wantErr: dummyErr,
},
}
for name, tc := range tcs {