From 74f9c1a8cdfaac948cf14a212cb5a51c49ddefa8 Mon Sep 17 00:00:00 2001 From: Michal Nazarewicz Date: Wed, 27 Jul 2016 18:14:57 +0200 Subject: [PATCH] =?utf8?q?Fix=20=E2=80=98is=20multibyte=E2=80=99=20test=20?= =?utf8?q?regex.c=E2=80=99s=20mutually=5Fexclusive=5Fp=20(bug#24020)?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * src/regex.c (mutually_exclusive_p): Fix how whether character is unibyte is tested when calling execute_charset function. This bug has been introduced by [6dc6b00: Fix ‘[[:cc:]]*literal’ regex failing to match ‘literal’] which dropped a call to IS_REAL_ASCII (c) macro. Reinstitute it. --- src/regex.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/regex.c b/src/regex.c index 297bf718848..1f2a1f086de 100644 --- a/src/regex.c +++ b/src/regex.c @@ -4767,7 +4767,7 @@ mutually_exclusive_p (struct re_pattern_buffer *bufp, const_re_char *p1, else if ((re_opcode_t) *p1 == charset || (re_opcode_t) *p1 == charset_not) { - if (!execute_charset (&p1, c, c, !multibyte)) + if (!execute_charset (&p1, c, c, !multibyte || IS_REAL_ASCII (c))) { DEBUG_PRINT (" No match => fast loop.\n"); return 1; -- 2.39.2