Skip to content

Fix panic on reversed slice bounds - #48

Open
bensynapse wants to merge 1 commit into
oliveagle:masterfrom
bensynapse:fix-reversed-slices
Open

bensynapse wants to merge 1 commit into
oliveagle:masterfrom
bensynapse:fix-reversed-slices

Conversation

@bensynapse

Copy link
Copy Markdown

I run Live Tennis API.

JsonPathLookup([]int{1, 2, 3, 4, 5}, "$[3:1]") currently panics in reflect.Value.Slice. Negative bounds and ends clamped below zero can trigger the same panic.

Clamp the start to the normalized end when the bounds are reversed. The result is an empty slice with its original type. This follows the convention already used by set_range.

The tests cover direct and compiled lookups on integer, interface and named slices. Two existing tests now exercise the reversed bounds they previously avoided.

go test -race -v -coverprofile=coverage.out -covermode=atomic ./... passes on Go 1.15 and 1.23.4, with 91.6% coverage. go build ./... and go vet ./... also pass. Thirty of the 36 new cases panic before the fix.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant