Merge pull request #686 from peco/fix-error-handling-minor

tweak handling
This commit is contained in:
lestrrat 2026-02-18 09:52:52 +09:00 committed by GitHub
commit 22439d1b69
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 23 additions and 1 deletions

View file

@ -72,6 +72,9 @@ func (q *Query) RuneSlice() []rune {
func (q *Query) RuneAt(where int) rune {
q.mutex.Lock()
defer q.mutex.Unlock()
if where < 0 || where >= len(q.query) {
return 0
}
return q.query[where]
}

View file

@ -152,6 +152,25 @@ func TestQueryRuneAtUnicode(t *testing.T) {
require.Equal(t, 'う', q.RuneAt(2))
}
func TestQueryRuneAtOutOfBounds(t *testing.T) {
t.Parallel()
var q Query
q.Set("hello")
// Out-of-bounds index returns zero rune without panicking
require.Equal(t, rune(0), q.RuneAt(5))
require.Equal(t, rune(0), q.RuneAt(100))
// Negative index returns zero rune without panicking
require.Equal(t, rune(0), q.RuneAt(-1))
require.Equal(t, rune(0), q.RuneAt(-100))
// Empty query: any index returns zero rune
var empty Query
require.Equal(t, rune(0), empty.RuneAt(0))
require.Equal(t, rune(0), empty.RuneAt(-1))
}
func TestQueryInsertAt(t *testing.T) {
t.Parallel()
tests := []struct {

View file

@ -106,7 +106,7 @@ func (s *Source) Setup(ctx context.Context, state *Peco) {
}
if closer, ok := s.in.(io.Closer); ok {
s.inClosed = true
closer.Close()
_ = closer.Close()
}
}()