58 lines
2.0 KiB
Diff
58 lines
2.0 KiB
Diff
|
From 8121278aa8fe72e9e8aca8651c7f1d4fa204ac1d Mon Sep 17 00:00:00 2001
|
|||
|
From: Karl Williamson <khw@cpan.org>
|
|||
|
Date: Mon, 2 Apr 2018 21:54:59 -0600
|
|||
|
Subject: [PATCH] PATCH: [perl #132167] Parse error in regex_sets
|
|||
|
MIME-Version: 1.0
|
|||
|
Content-Type: text/plain; charset=UTF-8
|
|||
|
Content-Transfer-Encoding: 8bit
|
|||
|
|
|||
|
When popping the stack, the code inappropriately also subtracted one
|
|||
|
from the result. This is probably left over from an earlier change in
|
|||
|
the implementation. The top of the stack contained the correct value;
|
|||
|
subtracting was a mistake.
|
|||
|
|
|||
|
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
|||
|
---
|
|||
|
regcomp.c | 2 +-
|
|||
|
t/re/regex_sets.t | 11 +++++++++++
|
|||
|
2 files changed, 12 insertions(+), 1 deletion(-)
|
|||
|
|
|||
|
diff --git a/regcomp.c b/regcomp.c
|
|||
|
index 018d5646fc..39ab260efa 100644
|
|||
|
--- a/regcomp.c
|
|||
|
+++ b/regcomp.c
|
|||
|
@@ -15689,7 +15689,7 @@ redo_curchar:
|
|||
|
* fence. Get rid of it */
|
|||
|
fence_ptr = av_pop(fence_stack);
|
|||
|
assert(fence_ptr);
|
|||
|
- fence = SvIV(fence_ptr) - 1;
|
|||
|
+ fence = SvIV(fence_ptr);
|
|||
|
SvREFCNT_dec_NN(fence_ptr);
|
|||
|
fence_ptr = NULL;
|
|||
|
|
|||
|
diff --git a/t/re/regex_sets.t b/t/re/regex_sets.t
|
|||
|
index e9644bd4e6..e70df81254 100644
|
|||
|
--- a/t/re/regex_sets.t
|
|||
|
+++ b/t/re/regex_sets.t
|
|||
|
@@ -204,6 +204,17 @@ for my $char ("٠", "٥", "٩") {
|
|||
|
like("a", qr/$pat/, "/$pat/ compiles and matches 'a'");
|
|||
|
}
|
|||
|
|
|||
|
+{ # [perl #132167]
|
|||
|
+ fresh_perl_is('no warnings "experimental::regex_sets";
|
|||
|
+ print "c" =~ qr/(?[ ( \p{Uppercase} ) + (\p{Lowercase} - ([a] + [b])) ])/;',
|
|||
|
+ 1, {},
|
|||
|
+ 'qr/(?[ ( \p{Uppercase} ) + (\p{Lowercase} - ([a] + [b])) ]) compiles and properly matches');
|
|||
|
+ fresh_perl_is('no warnings "experimental::regex_sets";
|
|||
|
+ print "b" =~ qr/(?[ ( \p{Uppercase} ) + (\p{Lowercase} - ([a] + [b])) ])/;',
|
|||
|
+ "", {},
|
|||
|
+ 'qr/(?[ ( \p{Uppercase} ) + (\p{Lowercase} - ([a] + [b])) ]) compiles and properly matches');
|
|||
|
+}
|
|||
|
+
|
|||
|
done_testing();
|
|||
|
|
|||
|
1;
|
|||
|
--
|
|||
|
2.14.3
|
|||
|
|