Open
Description
The following test results in an infinite loop.
func TestOverlappingMatch(t *testing.T) {
re := MustCompile(`((?:0*)+?(?:.*)+?)?`, 0)
match, err := re.FindStringMatch("0\xfd")
if err != nil {
t.Fatal(err)
}
for match != nil {
t.Logf("start: %d, length: %d", match.Index, match.Length)
match, err = re.FindNextMatch(match)
if err != nil {
t.Fatal(err)
}
}
}
$ go test -v -run TestOverlappingMatch
=== RUN TestOverlappingMatch
TestOverlappingMatch: regexp_test.go:802: start: 0, length: 2
TestOverlappingMatch: regexp_test.go:802: start: 1, length: 1
TestOverlappingMatch: regexp_test.go:802: start: 1, length: 1
TestOverlappingMatch: regexp_test.go:802: start: 1, length: 1
....
Metadata
Metadata
Assignees
Labels
No labels