Commit c22dc6d4 authored by Andy Postnikov's avatar Andy Postnikov
Browse files

main/pcre2: add patch for jit-regression

https://github.com/PhilipHazel/pcre2/pull/22
parent a9c96c43
......@@ -2,7 +2,7 @@
# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
pkgname=pcre2
pkgver=10.38
pkgrel=0
pkgrel=1
pkgdesc="Perl-compatible regular expression library"
url="https://pcre.org/"
arch="all"
......@@ -11,7 +11,9 @@ depends_dev="libedit-dev zlib-dev"
makedepends="$depends_dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-tools
libpcre2-16:_libpcre libpcre2-32:_libpcre"
source="https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.38/pcre2-$pkgver.tar.bz2"
source="https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.38/pcre2-$pkgver.tar.bz2
fix-jit-before-10.39.patch
"
case "$CARCH" in
s390x) _enable_jit="";; # https://bugs.exim.org/show_bug.cgi?id=2468
......@@ -73,4 +75,5 @@ tools() {
sha512sums="
3634cb2db6ccba9720c1b69890bcd9eb7057f6a6cb6981f12b3f2d6b2bb4e75e4e5014f566045f9ba1b79edf01fa5c4d81eb333727b9462e843dfb70f3a58f95 pcre2-10.38.tar.bz2
9962fca55e7f2be66212d89708750f2f1a07e97facb0964e43c94adc6405b723c33c175c3405f4be28e88fe0485b73e6b6d2d264cd9f0255c301c3324eacd2f2 fix-jit-before-10.39.patch
"
Patch-Source: https://github.com/PhilipHazel/pcre2/commit/e7af7efaa11f71b187b0432e9e60f18ba4d90a0c
From 51ec2c9893e7dac762b70033b85f55801b01176c Mon Sep 17 00:00:00 2001
From: Zoltan Herczeg <hzmester@freemail.hu>
Date: Tue, 5 Oct 2021 16:40:57 +0000
Subject: [PATCH] Fix incorrect detection of alternatives in first character
search.
---
ChangeLog | 6 ++++++
src/pcre2_jit_compile.c | 9 ++++++---
src/pcre2_jit_test.c | 1 +
3 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index e0ac9b3..05b317c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,12 @@
Change Log for PCRE2
--------------------
+Version 10.39-RC1 xx-xxx-2021
+-----------------------------
+
+1. Fix incorrect detection of alternatives in first character search.
+
+
Version 10.38 01-October-2021
-----------------------------
diff --git a/src/pcre2_jit_compile.c b/src/pcre2_jit_compile.c
index 495920d..2c61406 100644
--- a/src/pcre2_jit_compile.c
+++ b/src/pcre2_jit_compile.c
@@ -1251,10 +1251,13 @@ SLJIT_ASSERT(*cc == OP_ONCE || *cc == OP_BRA || *cc == OP_CBRA);
SLJIT_ASSERT(*cc != OP_CBRA || common->optimized_cbracket[GET2(cc, 1 + LINK_SIZE)] != 0);
SLJIT_ASSERT(start < EARLY_FAIL_ENHANCE_MAX);
+next_alt = cc + GET(cc, 1);
+if (*next_alt == OP_ALT)
+ fast_forward_allowed = FALSE;
+
do
{
count = start;
- next_alt = cc + GET(cc, 1);
cc += 1 + LINK_SIZE + ((*cc == OP_CBRA) ? IMM2_SIZE : 0);
while (TRUE)
@@ -1512,7 +1515,7 @@ do
{
count++;
- if (fast_forward_allowed && *next_alt == OP_KET)
+ if (fast_forward_allowed)
{
common->fast_forward_bc_ptr = accelerated_start;
common->private_data_ptrs[(accelerated_start + 1) - common->start] = ((*private_data_start) << 3) | type_skip;
@@ -1562,8 +1565,8 @@ do
else if (result < count)
result = count;
- fast_forward_allowed = FALSE;
cc = next_alt;
+ next_alt = cc + GET(cc, 1);
}
while (*cc == OP_ALT);
diff --git a/src/pcre2_jit_test.c b/src/pcre2_jit_test.c
index f748016..8dee16e 100644
--- a/src/pcre2_jit_test.c
+++ b/src/pcre2_jit_test.c
@@ -352,6 +352,7 @@ static struct regression_test_case regression_test_cases[] = {
{ MU, A, 0, 0, ".[ab]?.", "xx" },
{ MU, A, 0, 0, "_[ab]+_*a", "_aa" },
{ MU, A, 0, 0, "#(A+)#\\d+", "#A#A#0" },
+ { MU, A, 0, 0, "(?P<size>\\d+)m|M", "4M" },
/* Bracket repeats with limit. */
{ MU, A, 0, 0, "(?:(ab){2}){5}M", "abababababababababababM" },
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment