From c061f6a865a473cf93aae1e6a0ccd2325509a6b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Thu, 9 Jan 2014 13:39:28 +0100 Subject: [PATCH] Fix range check in JIT path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Jitted range check was wrong: re> /[efij]/S+ data> e No match while interpretted path is correct: re> /[efij]/ data> e 0: e This fix is part of: commit c07887b22a83fba842e88889c9e57a622b9ee439 Author: zherczeg Date: Sun Dec 22 20:47:08 2013 +0000 The auto-possessification of character sets were improved. The JIT compiler also optimizes more character set checks. git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1415 2f5784b3-3f2a-0410-8824-cb99058d5e15 Signed-off-by: Petr Písař --- pcre_jit_compile.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pcre_jit_compile.c b/pcre_jit_compile.c index d070263..47447da 100644 --- a/pcre_jit_compile.c +++ b/pcre_jit_compile.c @@ -3573,7 +3573,9 @@ switch(ranges[0]) } return TRUE; } - if ((ranges[3] - ranges[2]) == (ranges[5] - ranges[4]) && is_powerof2(ranges[4] - ranges[2])) + if ((ranges[3] - ranges[2]) == (ranges[5] - ranges[4]) + && (ranges[2] | (ranges[4] - ranges[2])) == ranges[4] + && is_powerof2(ranges[4] - ranges[2])) { if (readch) read_char(common); -- 1.8.3.1