From 53d42e43e359facdd83b313c1f4b70f9ff559a70 Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Fri, 22 Nov 2019 15:28:13 -0700 Subject: PATCH: gh #17319 Segfault It turns out that one isn't supposed to fill in the offset to the next regnode at node creation time. And this node is like EXACTish, so the string stuff isn't accounted for in its regcomp.sym definition --- t/re/pat.t | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 't') diff --git a/t/re/pat.t b/t/re/pat.t index ccf494c302..7d07d9981e 100644 --- a/t/re/pat.t +++ b/t/re/pat.t @@ -25,7 +25,7 @@ BEGIN { skip_all('no re module') unless defined &DynaLoader::boot_DynaLoader; skip_all_without_unicode_tables(); -plan tests => 1005; # Update this when adding/deleting tests. +plan tests => 1011; # Update this when adding/deleting tests. run_tests() unless caller; @@ -2207,6 +2207,15 @@ SKIP: unlike("\x{4000004}", $pat, "4000004 isn't in pattern"); like("\x{4000005}", $pat, "4000005 is in pattern"); unlike("\x{4000006}", $pat, "4000006 isn't in pattern"); + + # gh #17319 + $pat = qr/[\N{U+200D}\N{U+2000}]()/; + unlike("\x{1FFF}", $pat, "1FFF isn't in pattern"); + like("\x{2000}", $pat, "2000 is in pattern"); + unlike("\x{2001}", $pat, "2001 isn't in pattern"); + unlike("\x{200C}", $pat, "200C isn't in pattern"); + like("\x{200D}", $pat, "200 is in pattern"); + unlike("\x{200E}", $pat, "200E isn't in pattern"); } } # End of sub run_tests -- cgit v1.2.1