Apply the fix stated in PCRE bug #1423

There is JIT misoptimization found during code refactoring that
affects PCRE 8.34 (the version currently bundled with Qt).

The upstream might not release a specific bugfix release before 8.35,
hence the patch has been manually applied.

Upstream issue: http://bugs.exim.org/show_bug.cgi?id=1423

Change-Id: I8dbbb2981bc037d39b30fcaded6894ee9820b8df
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
This commit is contained in:
Giuseppe D'Angelo 2013-12-22 22:44:21 +01:00 committed by The Qt Project
parent d5d6e0cf99
commit ad9554a7f2
2 changed files with 18 additions and 1 deletions

View File

@ -0,0 +1,15 @@
Index: pcre_jit_compile.c
===================================================================
--- pcre_jit_compile.c (revision 1413)
+++ pcre_jit_compile.c (working copy)
@@ -3546,7 +3546,9 @@
}
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);

View File

@ -3546,7 +3546,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);