summaryrefslogtreecommitdiff
path: root/grep.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2022-01-05 22:01:31 (GMT)
committerJunio C Hamano <gitster@pobox.com>2022-01-05 22:01:31 (GMT)
commitc91b0b7c7270dac8c539062d193749e654b7f002 (patch)
tree86df5729ee96b399c5f5b578708305670f6e5fbb /grep.c
parent5d522cddfd910f6aa9383d121ac8dd17dfffff50 (diff)
parent32e3e8bc551e7b10bbda07110ae7cb15442d0392 (diff)
downloadgit-c91b0b7c7270dac8c539062d193749e654b7f002.zip
git-c91b0b7c7270dac8c539062d193749e654b7f002.tar.gz
git-c91b0b7c7270dac8c539062d193749e654b7f002.tar.bz2
Merge branch 'rs/pcre2-utf'
"git grep --perl-regexp" failed to match UTF-8 characters with wildcard when the pattern consists only of ASCII letters, which has been corrected. * rs/pcre2-utf: grep/pcre2: factor out literal variable grep/pcre2: use PCRE2_UTF even with ASCII patterns
Diffstat (limited to 'grep.c')
-rw-r--r--grep.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/grep.c b/grep.c
index beef5fe..47c75ab 100644
--- a/grep.c
+++ b/grep.c
@@ -362,6 +362,7 @@ static void compile_pcre2_pattern(struct grep_pat *p, const struct grep_opt *opt
int jitret;
int patinforet;
size_t jitsizearg;
+ int literal = !opt->ignore_case && (p->fixed || p->is_fixed);
/*
* Call pcre2_general_context_create() before calling any
@@ -382,8 +383,7 @@ static void compile_pcre2_pattern(struct grep_pat *p, const struct grep_opt *opt
}
options |= PCRE2_CASELESS;
}
- if (!opt->ignore_locale && is_utf8_locale() && has_non_ascii(p->pattern) &&
- !(!opt->ignore_case && (p->fixed || p->is_fixed)))
+ if (!opt->ignore_locale && is_utf8_locale() && !literal)
options |= (PCRE2_UTF | PCRE2_MATCH_INVALID_UTF);
#ifdef GIT_PCRE2_VERSION_10_36_OR_HIGHER