summaryrefslogtreecommitdiff
path: root/grep.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2023-03-30 20:47:12 (GMT)
committerJunio C Hamano <gitster@pobox.com>2023-03-30 20:47:12 (GMT)
commitd35cd54a23f8114dd6924f705cd125c71b8c1746 (patch)
tree2b415e8b6827e0de69c830bf8b7a98d1ca0cac8d /grep.c
parenta15b8451f2451fd212e0929b1bacb34de28cdc46 (diff)
parent14b9a044798ebb3858a1f1a1377309a3d6054ac8 (diff)
downloadgit-d35cd54a23f8114dd6924f705cd125c71b8c1746.zip
git-d35cd54a23f8114dd6924f705cd125c71b8c1746.tar.gz
git-d35cd54a23f8114dd6924f705cd125c71b8c1746.tar.bz2
Merge branch 'mk/workaround-pcre-jit-ucp-bug'
A recent-ish change to allow unicode character classes to be used with "grep -P" triggered a JIT bug in older pcre2 libraries. The problematic change in Git built with these older libraries has been disabled to work around the bug. * mk/workaround-pcre-jit-ucp-bug: grep: work around UTF-8 related JIT bug in PCRE2 <= 10.34
Diffstat (limited to 'grep.c')
-rw-r--r--grep.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/grep.c b/grep.c
index 68e9328..25dc2ec 100644
--- a/grep.c
+++ b/grep.c
@@ -321,6 +321,15 @@ static void compile_pcre2_pattern(struct grep_pat *p, const struct grep_opt *opt
if (!opt->ignore_locale && is_utf8_locale() && !literal)
options |= (PCRE2_UTF | PCRE2_UCP | PCRE2_MATCH_INVALID_UTF);
+#ifndef GIT_PCRE2_VERSION_10_35_OR_HIGHER
+ /*
+ * Work around a JIT bug related to invalid Unicode character handling
+ * fixed in 10.35:
+ * https://github.com/PCRE2Project/pcre2/commit/c21bd977547d
+ */
+ options &= ~PCRE2_UCP;
+#endif
+
#ifndef GIT_PCRE2_VERSION_10_36_OR_HIGHER
/* Work around https://bugs.exim.org/show_bug.cgi?id=2642 fixed in 10.36 */
if (PCRE2_MATCH_INVALID_UTF && options & (PCRE2_UTF | PCRE2_CASELESS))