diff --git a/index/eval.go b/index/eval.go index 4bba7322e..665168145 100644 --- a/index/eval.go +++ b/index/eval.go @@ -625,7 +625,7 @@ func (d *indexData) regexpToMatchTreeRecursive(r *syntax.Regexp, minTextSize int switch r.Op { case syntax.OpLiteral: s := string(r.Rune) - if len(s) >= minTextSize { + if len(r.Rune) >= minTextSize { ignoreCase := syntax.FoldCase == (r.Flags & syntax.FoldCase) mt, err := d.newSubstringMatchTree(&query.Substring{Pattern: s, FileName: fileName, CaseSensitive: !ignoreCase && caseSensitive}) return mt, true, !strings.Contains(s, "\n"), err diff --git a/index/eval_test.go b/index/eval_test.go index 1d20b9e6f..e090c1242 100644 --- a/index/eval_test.go +++ b/index/eval_test.go @@ -90,6 +90,9 @@ func TestRegexpParse(t *testing.T) { cases := []testcase{ {"(foo|)bar", substrMT("bar"), false, false}, {"(foo|)", &bruteForceMatchTree{}, false, false}, + {"éa", &bruteForceMatchTree{}, false, false}, + {"éab", substrMT("éab"), true, false}, + {"(éa|êb)", &bruteForceMatchTree{}, false, false}, {"(foo|bar)baz.*bla", &andMatchTree{[]matchTree{ &orMatchTree{[]matchTree{ substrMT("foo"),